C语言指针数组与二维数组行指针小问题

2024-12-29 00:34:30
推荐回答(2个)
回答1:

指针数组:该数组中存放的全部都是指针,例如:
原例子中的char *name[],这个是一个标准透了的一维数组,就像是数组
int a[4];
a[1]=2;
a[2]=3;
不同的是数组name存放的是指针,数组a存放的是数字
name[1]=name[2]表示的是把name[2]的指针赋值给name[1]就不难理解了。

二维数组的行名:
LZ假设的数组char name[5][20]是一个二维数组,行名name[1]表示的是一个指向字符串的指针没问题吧,这个指针中存放的是一个字符串,或者说是一个字符数组,如果说上例子要改为二维数组的形式,那么需要进行strcpy的字符串拷贝。

总结:
总的来说:指针数组中的name[1]表示的是一个变量,这个变量中存放的是指针,二维数组的name[1]表示的是一个指针,指向字符串的指针。如果LZ还不明白变量和指针的区别,我也没办法解释了。

回答2:

我觉得是不是这样啊,二维数组的话,像a[m][n]那么a[i]的话是代表第i行的首地址,相当于一个指针常量,是不能被赋值的,是个常量啊,但如果用一维指针数组的话a[i]就是数组中第i个指针变量的值了,就可以被赋值了。
只是我个人的看法啊,也没上网或查书核对,如果 不对大家不要骂啊。