| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1306 人关注过本帖
标题:字符串指针问题
只看楼主 加入收藏
屋顶
Rank: 1
等 级:新手上路
帖 子:174
专家分:7
注 册:2016-2-27
结帖率:92.86%
收藏
 问题点数:0 回复次数:3 
字符串指针问题
#include<stdio.h>
main()
{
   char *mesg="Donot be a fool!";
    printf("%s",mesg);
    }
这个第四行是不是应该写成printf("%s",*mesg);吗?mesg只是一个地址啊,要访问地址内容不是要加*吗?
搜索更多相关主题的帖子: 字符串 
2016-04-20 16:38
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10570
专家分:43038
注 册:2014-5-20
收藏
得分:0 
对的,字符串是按指针处理的。
这样看看
程序代码:
#include<stdio.h>
main()
{
   char *mesg="Donot be a fool!";
    printf("%s\n", mesg);
    printf("%s\n", mesg+6);
    printf("%s\n", mesg+9);
    }
2016-04-20 16:47
屋顶
Rank: 1
等 级:新手上路
帖 子:174
专家分:7
注 册:2016-2-27
收藏
得分:0 
回复 2楼 吹水佬
那为什么printf()里的地址不加*,不加*号,那mesg只是一个地址以%s输出,那应该是乱码啊

[此贴子已经被作者于2016-4-20 17:02编辑过]

2016-04-20 16:50
吹水佬
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:版主
威 望:451
帖 子:10570
专家分:43038
注 册:2014-5-20
收藏
得分:0 
以下是引用屋顶在2016-4-20 16:50:58的发言:

那为什么printf()里的地址不加*,不加*号,那mesg只是一个地址以%s输出,那应该是乱码啊

C规范中字符串的获取是从起始地址起直到\0结束,printf()的%s也是这样获取字符串。
mesg的值表示一个存放数据的内存地址首指针值。
*mesg是mesg指向的内存块数据,本例mesg声明是char类型。
这样看看
程序代码:
#include<stdio.h>
main()
{
   char *mesg="ABCD";
    printf("%s\n", mesg);
    
    printf("%d\n", mesg);
    printf("%d\n", mesg+1);
    printf("%d\n", mesg+2);
    printf("%d\n", mesg+3);

    printf("%c\n", *mesg);
    printf("%c\n", *mesg+1);
    printf("%c\n", *mesg+2);
    printf("%c\n", *mesg+3);
    
    }
2016-04-20 20:48
快速回复:字符串指针问题
数据加载中...
 
   



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

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