鱼C论坛

 找回密码
 立即注册
查看: 4334|回复: 4

求教c++如何获得C字符串的指针地址?

[复制链接]
发表于 2013-9-10 08:57:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 newmonk 于 2013-9-10 08:58 编辑

 int n[3]={10,11,12};
   cout<<n<<endl;//输出数组首元素的地址xxxxxxxx
   cout<<&n[0]<<endl;//取数组首元素的地址并输出,结果和上面相同
   cout<<n[0]<<endl;//输出数组首元素的值
   cout<<*n<<endl;//输出数组首元素的值,结果和上面相同
   cout<<endl;
    charc[4]="abc";
   cout<<c<<endl;//输出了整个数组的内容,怎么得到首元素的地址?
    cout<<&c[0]<<endl;//输出了整个数组的内容,并不是首元素的地址
   cout<<c[0]<<endl;//输出首元素a
   cout<<*c<<endl;//输出首元素a

大家可以看到程序分成上下2部分,当数组为int型时,获取数组的指针值是如此的简单!但对于字符数组怎么得到XXXXXXXX这样的指针在屏幕上显示出来,请大家指点一下。

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-9-10 09:20:51 | 显示全部楼层
在c++中,当你传给std:ostream的char*的时候,它会输出C-style的string, 也就是"abcd", 而不会是内存地址,如果要输出内存地址,需要这样static_cast<void *>(&c)
PS:百度之。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-9-10 10:54:27 | 显示全部楼层
&运算符是直接取地址,而static_cast<void*>是先将变量转换成void*,然后再输出这个指针的地址,这个过程中涉及到C++非常底层有关指针地址运算的东西。
谢谢2楼指点。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-10 11:04:47 | 显示全部楼层

大哥,你不回复我看不到的。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2013-9-23 10:25:44 | 显示全部楼层
学习学习:big
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-21 20:08

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表