| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1318 人关注过本帖
标题:为什么为出错?
只看楼主 加入收藏
五年约
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: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:CC
等 级:版主
威 望:58
帖 子:1685
专家分:4252
注 册: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
快速回复:为什么为出错?
数据加载中...
 
   



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

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