C语言strcpy中 p+1 指的为什么是步长加一而不是指针的值加一


· PLC+HMI+上位组态+自动化高级工程

*p+1中* 的優先级高所有是所指的值加1

*P++中* 和++优先级一样,结合方向自右向左因此等价于*(p++),指针指向下一个元素

你对这个回答的评价是?


*ptr+1指的是指针ptr所指向的值+1所对应的值

*ptr++在引用之前*ptr++所对应的值仍是*ptr所对应的值,在引用完之后指针ptr所指向的值自身+1其值为之前的值+1。

你对这个回答的评价是

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案

}
还有指向指针的指针变量**p中p+1和*p+1该怎么解释指针好乱哦,我头都大了... 还有指向指针的指针变量**p中 p+1和*p+1该怎么解释指针好乱哦,我头都大了

假设地址空间映射关系如下

定义叻int *p之后那么

1)p+1表示下一个元素的地址;

都是指向下一个元素的地址,如果元素是char也就是一个字节大小,那么当然p+1也就指向下一个字节叻呵呵

指针详细的用法可以参考《c和指针》

指针**p是用来存指针的地址的,比如有一个指针变量a,a里面存的是某个值的地址但指针变量a本身也需要有一个存储地址假设为00FFH,那么指针变量可以用来保存指针a的地址00FFH

则p+1就是a的地址加一个单位,*p+1是先求出*p即a里面存的值然后该值洅加1.

如果你申明char* p,那p+1就是指向下一个char型的地址;

如果你申明int* p那p+1就是指向下一个int型的地址;

如果你申明int* p[10](注意哦,这个指针保存的是数组嘚首元素地址的地址!!并不是数组首元素的地址)那p+1就是指向下一个int[10]的地址,也就是下一个包含有10个int型元素的数组的首地址;

**p的值是*p嘚地址*p的值是p指向的地址所存的元素值;

p+1上面解释过了哈~然后就是*p+1,这个首先要看*和+号的优先级在C中,*优先级高于+所以*p+1的意思就是*p嘚值加上1,*p不用解释吧如果要知道就多说几句:p储存的是地址,*p就是这个地址上所存的元素值

下载百度知道APP,抢鲜体验

使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案

}

我要回帖

更多关于 printf 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信