www.1862.net > C语言问题. *p+i与*(p+i)有什么区别啊?

C语言问题. *p+i与*(p+i)有什么区别啊?

写个C程序解释吧。 #includeint main(){ int a[32]={9,8,7,6,5,4,3,2,1}, *p = a; printf("%d %d\n", *p + 1, *(p + 3)); return 0;}输出为 10 6; 为什么呢?因为 *p = a 把 a 数组的首地址的值放在 p 处,所以p = a,*p =a[0]= 9 => *p + 1 = 9 ...

*p[i]的p应该是一个数组,数组元素是指针 *(p+i)里p是指向数组的一个指针

若果我还没记错的话: 你的问题:你这里问的是指针 p[i]:数组p的[i]这个地方放的值 *p[i]:数组p的[i]这个地方放的值(这当做一个地址)的值,即p[i]这个地方放了一个地址(相当于另外一个p[i]),然后用*读取他所代表的值。----即我所说的:数...

一维数组里也不可能等价 +是一个双目运算符 所以*p+i是要先算*p的,然后把值加上i 而*(p+i),先算的p+i,就是指向了一个新的位置,然后再*,这样就取了新的那个位置的值。 于是,这个问题前提就错了,我只能解答到这里了。

*p+i : *的优先级高于+,所以先计算*p,即取用指针p指向的内存中的数据,然后将该数据和i相加 *(p+i): 先计算括号中的p+i ,即将指针p向后移动i个位置,然后做*运算取用其中的数据

*p表示引用指针所指向地址的值。 *p=&i,p是个二级指针,即p指向另一个指针,然后那个指针指向i的地址,或者说间接指向i的地址。 p=&i,表示p直接指向i的地址。

p是指针变量,其值是一个变量的地址。p收到了哪个变量的地址,就指向哪个变量。该变量成为p的对象。 *p是p所指向的对象的值。 例如:int i=3,*p; p=&i; 注意:p收到i的地址,故p指向i,i是p的对象 printf("%d,%d\n",i,*p); 输出:3,3 注意:*p是...

p为指向3个元素的一维数组的指针 p+i表示第i个包含3个元素的一维数组的首地址 *(p+i),对p+i解引用,得到p+i的内容,为一维数组p+i的首元素的首地址 *(p+i)+j,一维数组p+i的第j个元素的地址 *(*(p+i)+j),一维数组p+i的第j个元素的内容 如果p指...

应该是 *p=array[i] p=array+i 这两句 其中p是一个指针 而array是一个数组,二者类型应该是相同的。 *p=array[i] 是说 p已经分配好空间了,然后把p指向空间赋值为array中第i个元素的值 而p=array+i 是把array 上第i个元素的地址,分配给p 或者说...

*(p++) = i;//这里先对p加1(假设k = p+1),然后在对这个指针k接引用,使得 k所指向的对象的值为1; p++;//这里先使用p的值,在对p加1.即p = p+1; *p = i; //这里让p指向的对象的值为1.比如*p = &k;这里p指向k。那么*p = i的功能就是k = i;

网站地图

All rights reserved Powered by www.1862.net

copyright ©right 2010-2021。
www.1862.net内容来自网络,如有侵犯请联系客服。zhit325@qq.com