C指针问题迷惑中,(*p)[4]和*p到底有什么区别?自学,谭浩强的C语言书,多维数 组指针变量,设有一个二维数组a[3][4],下面是书中原话:“(2)指向由m个元素组成的一维数组的指针变量.上例的指针

来源:学生作业帮助网 编辑:作业帮 时间:2024/04/20 16:13:19
C指针问题迷惑中,(*p)[4]和*p到底有什么区别?自学,谭浩强的C语言书,多维数 组指针变量,设有一个二维数组a[3][4],下面是书中原话:“(2)指向由m个元素组成的一维数组的指针变量.上例的指针

C指针问题迷惑中,(*p)[4]和*p到底有什么区别?自学,谭浩强的C语言书,多维数 组指针变量,设有一个二维数组a[3][4],下面是书中原话:“(2)指向由m个元素组成的一维数组的指针变量.上例的指针
C指针问题迷惑中,(*p)[4]和*p到底有什么区别?
自学,谭浩强的C语言书,多维数 组指针变量,设有一个二维数组a[3][4],下面是书中原话:“(2)指向由m个元素组成的一维数组的指针变量.上例的指针变量p是指向整型变量的,p+1所指向的元素是p所指向的下一元素.可以改用另一方法,使p不是指向整型变量,而是指向一个包含m个元素的一维数组.这时,如果p先指向a[0](即p=&a[0]),则p+1不是指向a[0][1],而是指向a[1],p的增值以一维数组的长度为单位,见图10.28.”————看到这里,似乎说的是p指向的是二维数组a[3][4]的每一行的第一个位置,书中前面举出了一个排长、班长、列兵的例子,那么这里p应该是充当了排长的角色而指向的是班长吗?那么下面又给出了这样一个例子:main(){int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};int (*p)[4],i,j;p=a;scanf("i=%d,j=%d\n",i,j,*(*(p+i)+j));}运行情况如下:i=1,j=2 /*回车*/a[1,2]=13/*程序第3行 int (*p)[4] 表示p是一个指针变量,它指向包含4个元素的一维数组.*/————一个问题就是,为什么要用(*p)[4]这种方式呢?用一个*p,依次指一行中的每一元素,(*p)[4]到底是什么意思?一开始认为它是一个数组,但书上意思却又说它不是.以上说得比较多,也不知道大家看明白了没有,总之是感觉很迷惑,还望各位老师及师兄能一一给予详细的解答.

C指针问题迷惑中,(*p)[4]和*p到底有什么区别?自学,谭浩强的C语言书,多维数 组指针变量,设有一个二维数组a[3][4],下面是书中原话:“(2)指向由m个元素组成的一维数组的指针变量.上例的指针
(*p)[4] p的含义是一个指向包含四个元素的数组的指针
*p p的含义是一个指向数的指针
指向数和指向数组是不一样的概念.
为什么要用(*p)[4]这种方式呢?用一个*p,依次指一行中的每一元素,不是一样可以解决问题吗?
对*p,p此时相当于一个一维数组,
但是对(*q)[4],q相当于一个二维数组,第二维的大小是4.
p[x]是一个数
q[x]却相当于一个一维数组,该一维数组的起始地址是q+x*4
所以加入p,q指向同一个地址,区别就是
p[0]==q[0][0],p[4]==q[1][0].
此时q可理解为指针的指针,q[x]是指针.所以q[x]与p是同种的指针.
所以q的引用会更清楚一点,它可将一维数组用二维的方式来引用.
就说这么多吧,睡觉了,希望有帮助.
自学C的时候,我指针这一章弄晕了,最后搞得我在那一周看到C教材就恶心.一周没看过书.

C指针问题迷惑中,(*p)[4]和*p到底有什么区别?自学,谭浩强的C语言书,多维数 组指针变量,设有一个二维数组a[3][4],下面是书中原话:“(2)指向由m个元素组成的一维数组的指针变量.上例的指针 C指针问题迷惑中,(*p)[4]和*p到底有什么区别?自学,谭浩强的C语言书,多维数 组指针变量,设有一个二维数组a[3][4],下面是书中原话:“(2)指向由m个元素组成的一维数组的指针变量.上例的指针 C指针问题迷惑中,*(p+i) 与 p+i 和 p[i] 的区别?*(p+i)前面有*不是取内容吗,怎么还是地址?该怎么理解? C语言中指针*p与*p-'0'和*p+'0'有什么区别 C语言中关于指针的指针问题?对于**P指针的理解:P的指针的指针就是**P.举个例子:*P=5,指的是指针P里面的数*P=5,那么,**P的意思是说*p=5里面的数?该怎么准确理解**P? C语言中指针里*(P*i*4+j)是什么意思 c语言中,定义一个指针 int*p.假定刚开始时候p所指向的地址相同.则指针p++和*(p++)的意义是否相同? c语言中*s++=*p是什么意思*s和*p是指向数组的指针 C语言中指针p与*p的区别? 数据结构中队列和指针的一个问题for(p=&Q.front,q=&Q.rear;*p!=*q&&total>m;p++){ //p,q为指针Dequeue(Q,ee);//(1)……//(2)}如上,我想用p指到队首,q指到对尾,然后进行了(1)的操作,Q.front就变了,那p的指 指针中*p+4等于*(p+4)吗 C语言 指针中*p=&n; ,和*p,p=&n;,有什么区别和关系呢?在什么情况下可以用*p=&n呢 C语言指针**p是什么意思 C语言中,指针p=p-->next表示指针的后移,那么如果调过来表示,p-->next=p,表示指针的前移? 在C语言中指针函数*p=&q,“*”和“&”什么作用? C语言中,指针P->next什么意思? 指针p++和*p++ 有何区别 来高手!求解! C语言中,指针 定义int a,*p=&a;中的*p=&a 和表达式中的 p=&a; 有什么区别? 是不是一样