51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 643|回复: 3
打印 上一主题 下一主题

一点有关C指针的疑问

[复制链接]

该用户从未签到

跳转到指定楼层
1#
发表于 2006-2-27 14:20:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
这几天都在看C++
看到了字符指针这块
书上说比如:char * pc="hello":
                       cout<<pc
为什么显示出来的是hello而不是首字母h的内存地址?
正常的   int icount=10;                或者 char icount='a';
               int * pc=&icount;                     char * pc =&icount;
              cout<<pc;                              cout<<pc
显示的不应该是10或者a内存地址吗?
还有是不是  char pc[10]="hello";和char pc[10]={'h','e','l','l','o'}有很大的区别?
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

该用户从未签到

2#
发表于 2006-2-28 12:59:17 | 只看该作者
这个问题比较复杂,一两句话也不大讲得清楚。
1。在C++语言里,字符串指针是一种特殊的指针,存放的是字符串的首地址和长度。
2。当我们调用"cout<<字符串指针“时,"cout"函数是C++自定义的函数,针对不同的类型有重载,会有不同的处理方法,当它发现要求输出的是一个字符串指针时,它调用的功能就会输出字符串的全部内容。
3。char pc[10]="hello";和char pc[10]={'h','e','l','l','o'}我觉得没有什么区别。

推荐你学习一下<<C++primer>>这本书,里面讲得很详细透彻,你现在学习的这本讲得就不大好。
回复 支持 反对

使用道具 举报

该用户从未签到

3#
发表于 2006-3-1 10:33:49 | 只看该作者
想要输出地址的话,必须把变量强制转换成viod*类型。
否则输出操作符“<<”会重载自适应。
回复 支持 反对

使用道具 举报

该用户从未签到

4#
发表于 2006-3-17 11:33:30 | 只看该作者
char pc[10]="hello";和char pc[10]={'h','e','l','l','o'}是有区别的,char  pc[10]="hello";是定义并初始化了一个字符串,PC[5]='\0', 作为字符串的结束标志。而char pc[10]={'h','e','l','l','o'}是定义并初始化了一个字符数组,无字符串结束标志。
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /2 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-6-20 23:25 , Processed in 0.072462 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

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