我用visual C++运行得知 :
*(p+i) [j] 和 (*(p+i))[j]
的运算结果是不同的。
然后我上网查了() []是1级优先级,左结合
* 是2级优先级,右结合
可是我仍然看不懂,为什么它们俩是不同的。能分别详细说下他们俩的运算步骤吗?非常感谢!!
请教C语言指针中 &p[0] p+i *(p+i) p[i] 区别 一直感觉很迷茫
C语言规定,对所定义的数组,数组名称等价于数组的首地址,即数组第一个元素的地址 & 是计算变量地址的运算符, * 是求出指定地址中的数据内容的运算符 所以,在定义了一维数组p的前提下,&p[0] 指的是数组第一个数组元素的地址,&p[0] 与 p 是等价的 p+i 是数组下标为i的数组元素的地址,...
c语言中*p+i和*(p+i)有什么不同
p+i : *的优先级高于+,所以先计算*p,即取用指针p指向的内存中的数据,然后将该数据和i相加 (p+i): 先计算括号中的p+i ,即将指针p向后移动i个位置,然后做*运算取用其中的数据
(*(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+i和*(p+i)有什么区别啊?新人求解……
p如果是数组的指针,指向的是数组的第一个元素,也就是说p就是第一个元素的地址,因此以为数组里面*p代表第一个元素的值,*p+i 代表第一个元素的值+i,而*(p+i)代表数组的第i个元素的值。二维数组里面*p指向这个二维数组的第一个一维数组,*p+i 就是把这个地址偏移i;(p+i)是指向二维数组的...
请教C语言指针中 &p[0] p+i *(p+i) p[i] 区别 一直感觉很迷茫
&p[0] 就是 p,&是取地址符号,所以它是指p[0]的地址,也就是p p+i 就不用解释了 (p+i) 是指p这个指针向后移动i位。它就等于p[i]p[i]就是数组中第i个元素。因为数组其实是用指针存放的,p就是第0个元素p[0]的地址(为了方便,我喜欢把第一个元素叫做第0个,因为它的下标是0,...
*(*(p+i)+j)怎么解释? p是指针 p+i 就应该是指向下个元素的首地址 那么...
p应该是二级指针,也就是行指针 p+i表示指向第i行,*(p+i)是第i行的首地址,*(p+i)+j表示的就是指向第i行第j列的地址,*(*(p+i)+j)就是第第i行第j列的元素值了
C语言问题。 *p+i与*(p+i)有什么区别啊?
其实在定义时你这样理解就很清楚答案了:char *p;理解成char (*p);*p在一起是一个char。那么,*p+i就是*p的值加上i,而*(p+i)是在先p+i再*操作,*是什么意思呢,在这里是“取值”。所以,*(p+i)是把指针移动i个位置,再返回前地址的值。
在c语言的指针运算中*(p+1)与p+1有什么区别 p是指针
一、指代不同 1、*(p+1):表示具体的数值。2、p+1:表示内存地址。二、指向的值不同 1、*(p+1):指针p所指向的内存地址单元的下一个内存地址单元中的值。2、p+1:指针p所指向的内存地址的下一个内存地址。三、内存表示不同 1、*(p+1):*的优先级比+的优先级高,所以*P+1在编译器中...
C语言(*(*p+i))是什么意思
p应该是指向二维数组的首地址 (*(*p+i))代表的是第一行第i列的值
C语言中指针*p+i与p+i表示的意思相同吗?
不一样;p+1 指的是指针p所指的变量加1 p+1 指的是指针向后移一位