www.ndwl.net > C语言中的*(*(p+i)+1)是什么意思?

C语言中的*(*(p+i)+1)是什么意思?

表达式中p应该是个指针,指向一个数组,如a[10] 数组a的首地址传输给指针p,*(p+i)就是数组的第i个元素a[i]。 表达式“s*=”就是s=s*() 于是,该表达式即为s=s*(*(p+i)) 也就是s=s*a[i] 表达式中第一个“*”是乘法运算 第二个“*”是指针运算符。

猜得出,一般情况下,*(*(p+i)+1)表示二维数组第i行第1个元素的值(i和1都是下标)

在指针p的地址上 加 (变量i乘以2)。 然后这个地址指向的内容就是结果了。

p和i是指针,比较的是两个指针指向的位置,当二者指向不通位置时此条件为真 p和i是整形或者字符,比较的是两个变量的值,二者值不同时条件为真 当p和i分别表示数组时,此时p和i在表达式中都退化为数组首地址的指针,比较方式同指针 p和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指...

*=是C语言的特殊操作符号,调用形式为 a*=b; 其等效于 a=a*b; 但是用*=的形式,可以减少代码输入,同时还可以提高运行效率。 p*=i也就是p=p*i, 即将原始的p值与i值相乘, 结果赋值给p。 C语言中类似的符号还有+=, -=, /=, %=, ^=, |=, &=等等。

是正确的,p+1代表p所指向的位置的下一个位置,所以*(p+i)就是a[1],还有一楼的理解是有误的,因为此处加1并不是加1个字节,而是加一个单位,该单位与指针p的类型所占的大小一样。

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

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

p=1;这句代码的意思是为变量p赋值为1,这是p的值为1; p*=i;这句代码等同于p = p * i;p的值目前为1,i的值是多少就不知道了,应该是在之前的代码中给了值。

网站地图

All rights reserved Powered by www.ndwl.net

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