c语言中,指向一维数组的指针变量有什么用呢?

2024-12-13 00:44:54
推荐回答(3个)
回答1:

int *p;
p是指向一个int类型的地址的指针,如果执行p+1那么它将移动一个int宽度的地址。

int (*p)[4];
p是指向一个有4个元素的int数组的指针(相当于一个二维指针),如果执行p+1,那么它将移动4个int宽度的地址。

*(*(p+n)+i)是把p当作一个二维指针进行解引用,它要访问的是score[n][i]元素,所以p+n移动了n个(4个int宽度)的地址,即移动到了第n行,*(p+n)取到了这一行的首地址,然后再加上i就移动到了这一行的第[i]个元素。

回答2:

省掉〔4〕,*p虽然指向了数组score首地址,但这样的话,输出语句printf("%5.2f ",*(*(p+n)+i));无法指向数组的第二行,指针p是一普通地址变量,它只能进行简单的移位*(p+n),而不能实现*(*(p+n)+i)).这就是报错的原因。。。

回答3:

这个相当于是个的数组,是一个指针数组,把它当做一个二维数组来调试