C++-一个C++指针入门问题
int s = 0;
int pint = *(&s+1);
运行时报错 -- 使用了未初始化的局部变量“s”
修改成 int *pint = &s+3; 不报错
修改成
int *p = &s;
int pint = *(&s+1); 也不会报错
这里究竟是什么原因?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
int s = 0;
int pint = *(&s+1);
初始化了s,但是使用&s+1这样一个并没有初始化的地址,这块进行了警告,并没有进行报错。
你的代码可以等价于
int s = 0;
int *temp = &s;
int print = *(temp + 1);
temp + 1 的值等于 (int)temp + sizeof(int) 报错很正常了。