6个回答
展开全部
我假设楼主是入门者,所以做入门的回答。
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
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
展开全部
是指针加一p=p+1.指针下移一个单位。比如如果是int *p,那么就下移4个字节。如果是char *p,就下移一个字节。总之,效果是p指向下一个元素。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是指针的地址+1,所指的变量的是不变的,变得只是这个变量的地址,也就是位置!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
是指当前指针地址加上1*sizeof(数据类型)
也即指针指向下一个位置
也即指针指向下一个位置
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
p++ 是地址加1
*p++ 才是对应的地址的值加1
*p++ 才是对应的地址的值加1
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询