标题:字符串指针问题
只看楼主
屋顶
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: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册: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: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:432
帖 子:10064
专家分:41463
注 册: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



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-463893-1-1.html




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

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