返回信息流先考考大家:
int a, *b;
b=&a;和*b=a;有什么区别?
这是一条镜像帖。来源:北邮人论坛 / is / #10161同步于 2011/3/28
该镜像源已超过 30 天没有更新,可能在源站已被删除。
IS机器人发帖
今天写c语言有个小心得
genius1wjc
2011/3/28镜像同步27 回复
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
【 在 foreverhope 的大作中提到: 】
: a是变量b是地址,前者是把a的地址赋给b,所以还是地址?后者是把a的值赋到b里,所以是值?
: _ 编程很烂,求拍砖
: --
: ...................
不是啊 你不能把我的小星号忽略不计啊
第一种 *b就是a 改了a的值 *b也变
第二种 *b不是a 就是copy了下a的数据
【 在 genius1wjc 的大作中提到: 】
: : 第一个是对指针赋值 第二个是对指针指向的值赋值
: : --
: 恩 使用起来有什么区别呢?
: ...................
受教了
那我那个全错了吧
【 在 wuliang 的大作中提到: 】
: 第一种 *b就是a 改了a的值 *b也变
: 第二种 *b不是a 就是copy了下a的数据
: 【 在 genius1wjc 的大作中提到: 】
: ...................
【 在 wuliang 的大作中提到: 】
: 第一种 *b就是a 改了a的值 *b也变
: 第二种 *b不是a 就是copy了下a的数据
: 【 在 genius1wjc 的大作中提到: 】
: ...................
嗯那
如何直接这么写的话会出现段错误:
int a, *b;
*b=a;
因为此时b还没有指向任何东西。如果我一定要使用这种写法,那我应该怎么写呢?难道是:
int a, *b;
b=&a;
*b=a;
???
*b=a;出错不是因为 “还没有指向任何东西”
声明指针的时候 指针变量是有空间的 它的值是一个乱七八糟的值 用来保存一个地址
段错误是因为 指针此时指向的数据区域(也就是地址为乱七八糟的值的那块)是不可以被修改的
如果一定要使用这种写法 就必须初始化一个整型数 再让指针指向它
【 在 wuliang 的大作中提到: 】
: *b=a;出错不是因为 “还没有指向任何东西”
: 声明指针的时候 指针变量是有空间的 它的值是一个乱七八糟的值 用来保存一个地址
: 段错误是因为 指针此时指向的数据区域(也就是地址为乱七八糟的值的那块)是不可以被修改的
: ...................
有道理
你是说这样吗?
int a=9, *b;
*b=a
不行吧