程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> c語言 二維指針-c語言二維指針作為參數的問題。

c語言 二維指針-c語言二維指針作為參數的問題。

編輯:編程綜合問答
c語言二維指針作為參數的問題。

#include
int stringcut(char str, char dest[][50],int num,int lines)
/
如果這裡不加上50會出錯*/
{
char *temp=str;
int k=0;
if(strlen(str) ==NULL)
{
return -1;
}
for(k=0;k<lines;k++)
{
strncpy(dest[k],temp,num);
temp=temp+num;
}
return 0;
}
main()
{
char str[]="abcdefghijklmnopqrstuvwxyz";
char dest[3][50];
int ret;
memset(dest,0,150);
ret=stringcut(str,dest,5,3);
if(ret!=0)
{
printf("failse\n");
}
printf("[%s]\n",dest[0]);
printf("[%s]\n",dest[1]);
printf("[%s]\n",dest[2]);
}

請問寫一個函數為二維數組賦值的時候,二維數組作為參數,應該怎麼寫,為什麼?上面注釋的地方為什麼去掉50的時候就報錯?
不知道為什麼參數不能寫成char **dest,如果這樣,程序會崩潰!

最佳回答:


當你用 一維數組 作為參數時,參數要這麼寫:
char str[]或者char* str
也就是參數必須是 一維數組的首元素指針
同樣,當你用 二維數組 作為參數時,參數要這麼寫:
char str[][N]或者char* str[N]
這裡參數同樣必須是 二維數組的首元素指針 ,但是對於二維數組來說,他的首元素就是 一維數組的指針 ,而 一維數組的指針 這個類型寫法就是char* str[N],當去掉[N]後char* str表示的只是 單個元素的指針 ,所以必須有N,不能缺少。
所以做以下總結:
當用一個 N維數組 作為參數,其寫法就是
char str[][N2][N3]...[Nn-1][Nn]或者char* str[N2][N3]...[Nn-1][Nn]
也就是說N維數組當參數,就必須寫他的首元素的指針,但是 N維數組的首元素是N-1維數組 ,故必須按照我剛才說的寫。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved