*(p[i]+j)
*(*p+i)+j)
(*(p+i))[j]
*(&p[0][0]+2*i+j)
*(p[0]+2*i+j)都是啥意思?
p是一个二维数组,二维数组在内存中是连续存储的。
*(p[i]+j)
p[i]表示的是指向第i行的指针,是int*型的。所以*(p[i]+j)其实和p[i][j]是一样的。
*(*p+i)+j)
这个少了个括号,应该是*((*p+i)+j)或者是*(*(p+i)+j)
如果是*((*p+i)+j)的话,*p指向的是第一行元素,那么这个式子其实就是*(p+i+j)。就是从第一个元素开始数i+j个元素。
如果是*(*(p+i)+j)的话,这个其实和p[i][j]一样。
(*(p+i))[j]
p+i可以看成是p移动i行,解引用后指向第i行元素的首地址。下标运算[j]就是取第j个元素。和p[i][j]一样。
*(&p[0][0]+2*i+j)
&p[0][0]是取p[0][0]的地址,返回的是一个int*指针。+2*i+j其实就是从第一个元素开始向后移动2*i+j个元素。
*(p[0]+2*i+j)
这个其实是和*(&p[0][0]+2*i+j)一样的,因为p[0]和&p[0][0]都是指向第一行的元素,两个都是int*指针。地址一样的。
这里我写了一个简单的代码,你可以对照看看
#include <stdio.h>...*(*p+i)+j) (*(p+i))[j] *(&p[0][0]+2*i+j) *(p[0]+2*i+j)都是...
p是一个二维数组,二维数组在内存中是连续存储的。(p[i]+j)p[i]表示的是指向第i行的指针,是int*型的。所以*(p[i]+j)其实和p[i][j]是一样的。(*p+i)+j)这个少了个括号,应该是*((*p+i)+j)或者是*(*(p+i)+j)如果是*((*p+i)+j)的话,*p指向的是第一行元素,那么这...
p++是什么意思, p+ i+ j是什么意思?
p++ 就是把 p里面的内容+1个单位,因为 p存的是地址,所以是 地址+1,也就是下一个地址。而*p 是 取内容的意思,即 取当前存放内容对应(指向)的地址 里面的内容。p是指针,*(p+i)+j是指向二维数组第i行第j个元素的。变量q的值是变量b的地址。
...*(*(p+i)+j) (*(p+i))[j] p[i][j]可以引用a[i][j]
p[n]==n[p] 因为 *(p+n)==*(n+p)你执行了p=a;因此p的值等于a的值.所以p[i][j]==a[i][j]你的理解是正确的.
*(*(p+i)+j)
定义一个指针:int *p;p=a;p+i:是第i行的首地址.(p+i)是第i行第0列元素的地址.(p+i)+j是第i行第j列元素的地址.(*(p+i)+j)是第i行第j列元素所对应的值.
(*(p+i))[j]什么意思啊
是二维数组的指针定义方式。假设该数组为a,p指向该数组的a【0】【0】,*p表示取该行的值。p+i表示指针移动了i个位置,即此时p指向a【i】【0】,*(p+i)表示取第i行的值,*(p+i)【j】则指定了取出第i行第j个数值。
关于数组指针的问题?
p是该数组的首地址,是一个int型指针 p+i就是该数组第一个变量的下下下···(i个下)个变量的地址 (*p+i)+j就是该数组第一个变量的下下下···(i+j个下)个变量的地址 ((*p+i)+j)得到的是该数组第一个变量的下下下···(i+j个下)个变量 如果(i+j)超出了5(大于等于5)二维数...
C语言subscript requires array or pointer type错误是什么意思
意思是对于非数组和指针类型的变量,不能用[]这样的下标符号。下标表达式,形如p[i],等价于*(p+i),其中+是指针加法,数值上相当于+ sizeof(*p) * i。“多维”的下标表达式如p[i][j],由结合性等价于(p[i])[j],即*(p[i]+j),也就是*(*(p+i)+j)。[]和一元*操作符的操作数...
c语言中的* p+ i是什么意思?
“left operand must be l-value”的意思是左操作数必须是左值。左值(l-value):出现于“=”左边的标识符。(为变量)。右值(r-value):出现于“=”右边的标识符。(变量或表达式)。表达式:产生确定不变的值。类似于a1x^n + a2x^n-1 +...+ an多项式(n>=1)。p+i 是一个表达式,是...
*p+i和*(p+i)有什么区别啊?新人求解……
指向的是数组的第一个元素,也就是说p就是第一个元素的地址,因此以为数组里面*p代表第一个元素的值,*p+i 代表第一个元素的值+i,而*(p+i)代表数组的第i个元素的值。二维数组里面*p指向这个二维数组的第一个一维数组,*p+i 就是把这个地址偏移i;(p+i)是指向二维数组的第i个一维数组。
C语言这里的(*p)[3]是什么意思?
p是指针,*(p+i)+j是指向二维数组第i行第j个元素的指针,(*p)[3]表示把p声明为指向含有三个元素的数组的指针,指针以内存地址作为其值,2293216,2293296应该都是内存地址。