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

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

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

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

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

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

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

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

写个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的[i]这个地方放的值 *p[i]:数组p的[i]这个地方放的值(这当做一个地址)的值,即p[i]这个地方放了一个地址(相当于另外一个p[i]),然后用*读取他所代表的值。----即我所说的:数...

*(p+1)表示具体的数值,指针p所指向的内存地址单元的下一个内存地址单元中的值; p+1 表示地址,指针p所指向的内存地址的下一个内存地址。 可以通过下面的实例来理解*(p+1)与p+1之间的区别: int *p; // 定义一个int类型的指针p int a[3]={1,2,3...

网站地图

All rights reserved Powered by www.ndwl.net

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