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

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

其实在定义时你这样理解就很清楚答案了: char *p;理解成char (*p);*p在一起是一个char。那么,*p+i就是*p的值加上i,而*(p+i)是在先p+i再*操作,*是什么意思呢,在这里是“取值”。所以,*(p+i)是把指针移动i个位置,再返回前地址的值。

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

p如果是数组的指针, 指向的是数组的第一个元素,也就是说p就是第一个元素的地址,因此以为数组里面*p代表第一个元素的值,*p+i 代表第一个元素的值+i,而*(p+i)代表数组的第i个元素的值。 二维数组里面*p指向这个二维数组的第一个一维数组,*p+...

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

(1)如果定义int *p,p=a[0];则P是指向二维数组首个元素的指针变量。 p=a[0]等价于p=&a[0][0],p+1等价于a[1]等价于&a[1][0] (2)如果定义int (*p)[4] ,p=a;则P是指向二维数组第0行的指针变量。 a等价于&a[0],*p等价于a[0];所以**p等价于a[0][...

第一个p是指针的指针,第二个p是指针。

前者是 定义一个指向含有i个元素的数组的指针不过要注意 这里i应该是一个常量 比如 int (*p)[6]; int a[3][6]; p=a; 后者很简单 定义元素类型是指针的数组 同样的i应该是整型的

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是指针变量,其值是一个变量的地址。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是...

int * p;是定义一个指针“*p = i; ”里德*P是p的值了,“ p = &i”是p指向了i的地址,也可以理解为将i的地址付给了指针p。如果*p=i的话那printf("*p=%d\n",p);这样改应该就能运行起来了。但是这两者的意义就不同了。建议你多看看指针的基础知识。

网站地图

All rights reserved Powered by www.1862.net

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