标题:为什么为出错?
只看楼主
五年约
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2018-7-21
结帖率:25%
已结贴  问题点数:10 回复次数:7 
为什么为出错?
程序代码:
#include <stdio.h>

int main(void)
{
        char *name=NULL;

        printf("What's your name:");
        scanf("%s", name);
        printf("Your name is %s\n", name);

        return 0;
}
搜索更多相关主题的帖子: 出错 name NULL printf scanf 
2018-09-06 13:47
no1xijin
Rank: 9Rank: 9Rank: 9
来 自:江西
等 级:贵宾
威 望:20
帖 子:211
专家分:1207
注 册:2015-7-8
得分:2 
因为你的指针为空 char *name=NULL;
也就是没有内存,但是你却往这个指针里存数据

126邮箱联系方式:no1xijin@126. com
2018-09-06 14:14
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
得分:2 
回复 楼主 五年约

int main()
{
    char s[30];
    char *name=s;//指针要初始化,否则就是野指针,可能指向不能访问的内存区域
    printf("What's your name:");
    scanf("%s", name);
    printf("Your name is %s\n", name);

    return 0;
}
2018-09-06 15:01
五年约
Rank: 1
等 级:新手上路
帖 子:8
专家分:0
注 册:2018-7-21
得分:0 
回复 3楼 花脸
char *p=NULL不也是初始化吗
2018-09-07 13:03
花脸
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:9
帖 子:788
专家分:907
注 册:2017-1-4
得分:0 
回复 4楼 五年约
空指针是一个特殊的指针值,也是唯一一个对任何指针类型都合法的指针值。指针变量具有空指针值,表示它当时处于闲置状态,没有指向有意义的东西
2018-09-07 19:13
forever74
Rank: 12Rank: 12Rank: 12
来 自:CC
等 级:贵宾
威 望:49
帖 子:1636
专家分:3940
注 册:2007-12-27
得分:2 
你把“2号床”这个名字指向了空气,然后你想躺上去,于是摔到地板上了,就是这么回事儿。

对宇宙最严谨的描述应该就是宇宙其实是不严谨的
2018-09-08 09:30
rui85125
Rank: 1
等 级:新手上路
帖 子:2
专家分:2
注 册:2018-9-10
得分:2 
指针为空,没了解指针的内容
2018-09-10 03:27
Mr_doge
Rank: 5Rank: 5
等 级:贵宾
威 望:10
帖 子:159
专家分:385
注 册:2018-6-28
得分:2 
char *name=NULL;

scanf("%s", name);

声明了一个char类型指针,并赋值NULL(空)。
执行scanf()函数,读取一段字符串(到\n或space为止),并存入name处,但是name是空的,没有指向任何有效内存地址,无法储存读取的字符串,程序出错。
2018-09-10 09:12



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




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

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