c++中的指针变量一般用*a *b形式标示.但有时会用a无星号形式,请问有何不同. 例如*a=b *a=*b看2,3楼的追问.*a=b;*a=*b;**a=*b;作用应该是一样的,但原理上应该是不同的.那位大神能解答啊?!

来源:学生作业帮助网 编辑:作业帮 时间:2024/05/07 05:05:01
c++中的指针变量一般用*a *b形式标示.但有时会用a无星号形式,请问有何不同. 例如*a=b *a=*b看2,3楼的追问.*a=b;*a=*b;**a=*b;作用应该是一样的,但原理上应该是不同的.那位大神能解答啊?!

c++中的指针变量一般用*a *b形式标示.但有时会用a无星号形式,请问有何不同. 例如*a=b *a=*b看2,3楼的追问.*a=b;*a=*b;**a=*b;作用应该是一样的,但原理上应该是不同的.那位大神能解答啊?!
c++中的指针变量一般用*a *b形式标示.但有时会用a无星号形式,请问有何不同. 例如*a=b *a=*b
看2,3楼的追问.
*a=b;*a=*b;**a=*b;作用应该是一样的,但原理上应该是不同的.那位大神能解答啊?!

c++中的指针变量一般用*a *b形式标示.但有时会用a无星号形式,请问有何不同. 例如*a=b *a=*b看2,3楼的追问.*a=b;*a=*b;**a=*b;作用应该是一样的,但原理上应该是不同的.那位大神能解答啊?!
其实C代码编译成二进制后是不分类型的.指针的值就是虚拟存储的一个地址,地址也是值,也可以放在内存里.
*a=b就是说指针a所指向的地址里的内容换成b;
*a=*b就是说将指针b指向的地址里的内容放到指针a所指向的地址里;
至于**a=*b,就是说,a指向的地址里存放的也是个地址,如果设这个地址为c,那么c的值就是*a,那么**a也就是*c,上式就等价于*c=*b.
当然,C编译器在编译时要执行类型检查,你不能直接把一个int类型的变量复制给*int类型的变量,这就需要类型强制转换.