求教关于C++指针的一个问题
时间:2011-12-02
来源:互联网
#include <iostream> using namespace std; class A { public: void abc(int *p,int *q) { *p=1;//这里能赋值 *q=2;//这里能赋值 cout<<*p<<" "<<*q<<endl; } }; void main() { int a=7; int *b=&a; int *v; *v=7;//为什么这里不能赋值 int c=8; int *d=&c; A g; g.abc(b,d); cout<<*b<<" "<<*d<<endl; }
想问一下为什么在函数里面的指针能赋值,而在主程序里的指针不能赋值
作者: yugijiudai 发布时间: 2011-12-02
#include <iostream> using namespace std; class A { public: void abc(int *p,int *q) { *p=1;//这里能赋值 *q=2;//这里能赋值 cout<<*p<<" "<<*q<<endl; } }; void main() { int a=7; int *b=&a; int *v = new int;//因为你只定义了指针,未分配内存,分配了内存就能赋值了 *v=7;//为什么这里不能赋值 int c=8; int *d=&c; A g; g.abc(b,d);//函数能赋值是因为这里的b,d参数都已经申请了内存 cout<<*b<<" "<<*d<<endl; }
作者: et214721856 发布时间: 2011-12-02
你在代码最后一行加上:cout<<a<<" "<<c<<endl; 就能看到 a、c 因为 p、q 的更改而更改了。
作者: SegmentFault 发布时间: 2011-12-02
没有申请内存,当然不能赋值了
g.abc(b,d);
b和d都指向了一个内存,当然可以了
作者: ouyh12345 发布时间: 2011-12-02
并不是所有的参数,都是有效的
作者: ouyh12345 发布时间: 2011-12-02
该回复于2011-12-02 17:10:32被管理员删除
- 对我有用[0]
- 丢个板砖[0]
- 引用
- 举报
- 管理
- TOP
|
#6楼 得分:0回复于:2011-12-02 17:14:01
|
作者: a130098300 发布时间: 2011-12-02
作者: lwei3600103 发布时间: 2011-12-02
v 是野指针,没有分配内存空间,直接赋值会导致段错误。而 p、q 不是,分别指向变量 a、c,所以可以操作。
你在代码最后一行加上:cout<<a<<" "<<c<<endl; 就能看到 a、c 因为 p、q 的更改而更改了。
正解
作者: langyano1 发布时间: 2011-12-02
作者: wang7535067 发布时间: 2011-12-02
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28