首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >递增c++中的指针

递增c++中的指针
EN

Stack Overflow用户
提问于 2013-01-11 04:31:57
回答 3查看 130关注 0票数 0
代码语言:javascript
运行
复制
#include<stdio.h>

int main()
{
    int a=5,*b,*c;

    b=&a;
    c=b;

    *b++=*c++;

    printf(" %d %d %d\n",&a,b,c);
} 

这里,如果a的地址是x,那么b和c的值都变成了x+4。但是,两个++运算符不应该至少将一个值增加8吗

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-11 04:38:42

不是的。不要混淆指针的值和它所指向的值。

表达式*b++的意思是:检索b指向的值,然后递增b的值。

票数 4
EN

Stack Overflow用户

发布于 2013-01-11 04:45:01

应该使用%p而不是%d来设置指针值的格式。

这里要做的就是通过指针将a的值设置为自身。注意,bc在递增后可能都不会被取消引用(因为它们指向单个值,而不是数组)。

请注意,如果要递增实际值,则必须使用括号:

代码语言:javascript
运行
复制
(*b)++;

这将取消对b的引用并递增该值。如果不使用圆括号,那么它将递增指针,然后取消对原始值的引用。

票数 0
EN

Stack Overflow用户

发布于 2013-01-11 04:52:26

请记住这一点

这意味着b指向某个整数,整数值增加了1,而不是2,如果你想打印指针,你应该使用%p格式说明符,而不是使用signs.And。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14266738

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档