c++中的指针变量一般用*a *b形式标示.但有时会用a无星号形式,请问有何不同. 例如*a=b *a=*b

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

最佳回答

开心的玉米

朴实的荷花

2026-04-08 23:28:22

其实C代码编译成二进制后是不分类型的。指针的值就是虚拟存储的一个地址,地址也是值,也可以放在内存里。*a=b就是说指针a所指向的地址里的内容换成b;*a=*b就是说将指针b指向的地址里的内容放到指针a所指向的地址里;至于**a=*b,就是说,a指向的地址里存放的也是个地址,如果设这个地址为c,那么c的值就是*a,那么**a也就是*c,上式就等价于*c=*b。当然,C编译器在编译时要执行类型检查,你不能直接把一个int类型的变量复制给*int类型的变量,这就需要类型强制转换。

最新回答共有2条回答

  • 儒雅的灯泡
    回复
    2026-04-08 23:28:22

    其实C代码编译成二进制后是不分类型的。指针的值就是虚拟存储的一个地址,地址也是值,也可以放在内存里。*a=b就是说指针a所指向的地址里的内容换成b;*a=*b就是说将指针b指向的地址里的内容放到指针a所指向的地址里;至于**a=*b,就是说,a指向的地址里存放的也是个地址,如果设这个地址为c,那么c的值就是*a,那么**a也就是*c,上式就等价于*c=*b。当然,C编译器在编译时要执行类型检查,你不能直接把一个int类型的变量复制给*int类型的变量,这就需要类型强制转换。

上一篇 孩子如何帮助大人们保护环境的作文英语

下一篇 1.水果店原来水果180千克,其中苹果占5/8又多3千克,其余的是香蕉,香蕉运来多少千克?