tnjk.net
当前位置:首页 >> C语言中i<=3&&*p是什么意思 >>

C语言中i<=3&&*p是什么意思

&&在C语言中是逻辑与的意思,他的运算规则是true&&true的结果是true,其他的(true&&false,false&&true,false&&false)结果都是false 这句话的意思就是i小于等于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 != 0

没记错的话是定义了一个指向数组的指针,这个数组有三个元素。

(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赋值是i的地址,p里面存储的是i的地址,不是i的值,这个地址值由系统分配,是一个不确定的值。

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

**可以认为是二维数组 因为*p可以指向一个指针,这个指针可以是一个数组的头指针. 也可以是一个字符串数组, 那么*p就是一个字符串,但事实上字符串数组和二维数组实际上是一样的

等号右边是一个逗号表达式,该表达式的值是逗号后面的值,即 (a&&5+3)的值,x (*p%=2)的值不用管。这个问题就是x=x/((a&&5+3))

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

网站首页 | 网站地图
All rights reserved Powered by www.tnjk.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com