C语言中,对指针p

p++是指针值+1还是加上指针所指向变量数据类型的长度??... p++是指针值+1还是加上指针所指向变量数据类型的长度?? 展开
 我来答
Mincreft我的世界
2012-05-12 · TA获得超过348个赞
知道小有建树答主
回答量:99
采纳率:100%
帮助的人:52.2万
展开全部
我假设楼主是入门者,所以做入门的回答。
p++;
这个表达式等价于: p = p+1; (或者p+=1;)
楼主的困惑发生在对指针、指针的类型及指针的运算的理解不足上。
1. 指针的本质是一个值,代表一个内存地址。所以,指针的基本功能就是指出(point to)一个地址。
2.指针的类型,是指:指针所指出的那个地址里存放的那个数据的类型。也就是 (*p)d的类型。
3. 进行p++或p = p+1;运算隐含一个假设:运算之前的p指向了一个类型为(*p)的数组(这样说是便于入门者理解,也可以说队列)中的某一个元素。p++(或者p=p+1,或p+=1)的结果就是p指向了这个数组的下一个相邻的元素。

地址 内存
0x0000 | |
0x0001 | |
.
.
.
0x80F4 | | <-------p (假设运算前p 的值为 0x80F4)
0x80F5 | |
0x80F6 | |
0x80F7 | |
0x80F8 | |
0x80F9 | |
0x80FA | |

运算之后:
0x80F4 | | <-------p (假设运算前p 的值为 0x80F4)
0x80F5 | | <-------(p++) (当 定义为 char *p )
0x80F6 | | <-------(p++) (当 定义为WORD *p )
0x80F7 | |
0x80F8 | | <-------(p++) (当 定义为DWORD *p )
0x80F9 | |
0x80FA | |
.
.
0x80FF | |
0x8100 | | <-------(p++) (当p 定义为struct StructName *p ,且结构长度为12)

楼主可以继续学习指针的概念。尤其建议探究 指针与数组 的异同,可能会让你豁然开朗。比如:
*p 与 p[0] 等值,同样(p++) 与 p[1] 等值(但p++改变了p),且完全符合C语法。

最后郑重告知楼主:
1. C语言,成于指针,败于指针;
2. 不能百分之百确认前,勿用指针
3. 不能熟练运用指针前,不要声称自己熟练使用C语言
4. 熟练使用C语言后,请大胆、大量的运用指针,包括函数指针
5.下学ASM,上学C++,使用C:精通C
Purepromise
2012-05-12 · TA获得超过122个赞
知道小有建树答主
回答量:156
采纳率:0%
帮助的人:84万
展开全部
是指针加一p=p+1.指针下移一个单位。比如如果是int *p,那么就下移4个字节。如果是char *p,就下移一个字节。总之,效果是p指向下一个元素。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友b685d24
2012-05-12 · TA获得超过113个赞
知道答主
回答量:38
采纳率:0%
帮助的人:21.6万
展开全部
是指针的地址+1,所指的变量的是不变的,变得只是这个变量的地址,也就是位置!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
脾角额5
2012-05-12 · TA获得超过437个赞
知道小有建树答主
回答量:343
采纳率:0%
帮助的人:203万
展开全部
是指当前指针地址加上1*sizeof(数据类型)

也即指针指向下一个位置
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友ecdc68a
2012-05-12 · TA获得超过343个赞
知道小有建树答主
回答量:444
采纳率:0%
帮助的人:243万
展开全部
p++ 是地址加1
*p++ 才是对应的地址的值加1
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式