| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1187 人关注过本帖
标题:[求助]字符串指针
取消只看楼主 加入收藏
沉路
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2005-5-15
收藏
 问题点数:0 回复次数:4 
[求助]字符串指针

把字符串赋给一个指针变量,即是把字符串的首地址赋给该指针变量。

char *p="hello";

那么当我们输出p时,是不是输出地址呢?不是。请看下面四种情况:

printf("%s\n",p);//输出结果是hello

printf("%s\n",*p);

//运行出错。“0x00401a8c”指令引用的“0x00000043”内存。该内存不能为“read”.

cout<<p<<endl;//结果是hello

cout<<*p<<endl;//结果是h

既然p保存的是地址,为什么cout<<p; 输出的不是地址呢?

搜索更多相关主题的帖子: 指针 内存 字符 hello 变量 
2006-07-27 11:28
沉路
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2005-5-15
收藏
得分:0 

谢谢!我总结如下:

1,如何输出字符指针的地址?(未解决)
根据3楼和6楼的提示,做如下实验:(运行于vc6.0)
int *p="hello";
printf("%d\n",p);//输出:4349984
printf("%p\n",p);//输出:00426020
这两个都不是地址,因为地址是十六进制表示的,我猜这两个数没有意义。那么,到底如何才能输出字符指针p的地址呢?

2,%s的输出规则:
%s是输出字符串,具体是从当前地址开始输入一个字符,然后把地址加1,再输出下一个字符,直到遇到‘\0’。因此,%s具有输出一串字符的功能,%d等则没有。

3,printf("%s",*p);的理解是完全错误的!应该是:
printf("%c",*p);//*p是取p的内容,p是首字符的地址,因此*p是首字符。如果用
// %d,则输出首字符的ASCII码。
那么我们对比一下这两句:
printf("%s",p);//输出字符串内容
printf("%c",*p);//输出字符内容
如果说p是地址,那么*p是内容天经地义,但第一句p也成了内容,这只能解释为%s的特殊规则。

4,cout的自动匹配:
cout<<p<<endl;//等价于printf("%s",p);
cout<<*p<<endl;//等价于printf("%c",*p);
11楼是正确的。

[此贴子已经被作者于2006-7-30 19:13:15编辑过]


我的博客:http://tongshengyuan. 我的博客:http://sanweishuwu2005.
2006-07-30 19:09
沉路
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2005-5-15
收藏
得分:0 
请指正。并讨论一下第一个问题!

我的博客:http://tongshengyuan. 我的博客:http://sanweishuwu2005.
2006-07-30 19:12
沉路
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2005-5-15
收藏
得分:0 
呵呵,十六进制不是以0x开头的么?
还有,c语言的书上没有讲到 %x,%p之类的东西,可以给点这方面的资料么?

我的博客:http://tongshengyuan. 我的博客:http://sanweishuwu2005.
2006-07-30 22:25
沉路
Rank: 1
等 级:新手上路
帖 子:36
专家分:0
注 册:2005-5-15
收藏
得分:0 
经过实验:
char *s="hello";
printf("%d\n",s);//输出十进制地址
printf("%p\n",s);//输出十六进制地址,以00开头

char c='a',*pc=&c;
printf("%d\n",pc);//输出十进制地址
printf("%p\n",pc);//输出十六进制地址,以00开头
cout<<pc<<endl;// 输出乱码——为什么?

int a,*pa=&a;
printf("%d\n",pa);//输出十进制地址
printf("%p\n",pa);//输出十六进制地址,以00开头
cout<<pa<<endl;//输出十六进制地址,以0x开头

[此贴子已经被作者于2006-7-30 23:05:39编辑过]


我的博客:http://tongshengyuan. 我的博客:http://sanweishuwu2005.
2006-07-30 23:00
快速回复:[求助]字符串指针
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.031387 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved