tyf1218405122 发表于 2022-5-27 19:59:40

关于字符串输入的问题

#include <stdio.h>
int main()
{
        char *name;
        scanf("%s",name);
        printf("%s",name);
}

为什么这个代码不报错也不警告呢?

name 是一个野指针,我往野指针里写东西,居然不报错也不警告。

当初约定 发表于 2022-5-27 20:02:00

为什么说是野指针呢?我看它只是没有初始化而已

当初约定 发表于 2022-5-27 20:04:27

我尝试着运行了一下,楼主你写的代码符合代码语法,但不符合需求,编译器只校验语法和语义,所以就不会报错

Arsmart 发表于 2022-5-27 20:07:00

https://starsone.site/----/
https://advocatesnairobi.com/-/
https://sanakanwalfashion.com/----/
https://kerbymethodconsulting.com/-----79137/
https://diamonds.tokyo/-/

tyf1218405122 发表于 2022-5-27 20:07:32

当初约定 发表于 2022-5-27 20:02
为什么说是野指针呢?我看它只是没有初始化而已

野指针和未初始化的指针不是一个概念是吗?

当初约定 发表于 2022-5-27 20:09:03

宽泛的说它们是一样,准确的说是野指针包含未初始化的指针吧{:10_297:}

tyf1218405122 发表于 2022-5-27 20:13:00

当初约定 发表于 2022-5-27 20:09
宽泛的说它们是一样,准确的说是野指针包含未初始化的指针吧

那我就不知道怎么办了,要是在笔试遇到,我就不知道算错算对了。
我在c primer plus上看到的 ,
书上写可能会通过编译(但很可能会给出警告)。

当初约定 发表于 2022-5-27 20:16:29

如果是问是否符合要求,那肯定是不符合;但如果是问是否符合语法,那我认为肯定符合,这是我的看法

tyf1218405122 发表于 2022-5-27 20:21:19

当初约定 发表于 2022-5-27 20:16
如果是问是否符合要求,那肯定是不符合;但如果是问是否符合语法,那我认为肯定符合,这是我的看法

我在写C程序设计试题汇编 (第三版的)就谭浩强那一版的时候;
里面有选项是这样的
char *s;
s=“aaaaa”;
就是这样的表达形式;
给的选项说是对的。

当初约定 发表于 2022-5-27 20:22:39

等其他大哥来看看@Twilight6 {:10_256:}

tyf1218405122 发表于 2022-5-27 20:23:54

当初约定 发表于 2022-5-27 20:22
等其他大哥来看看@Twilight6

哈哈哈,可以的

想入门的新人 发表于 2022-5-27 20:36:11

tyf1218405122 发表于 2022-5-27 20:21
我在写C程序设计试题汇编 (第三版的)就谭浩强那一版的时候;
里面有选项是这样的
char *s;


这里的s指向的是常量区的aaaaa,这里的s就不是也指针,所以是对的

想入门的新人 发表于 2022-5-27 20:38:35

你这里的name所指向的地址是随机的,你给一块随机的地址赋值,还打印出来,这就好比你未经允许去别人家吃饭,还在在里面参观一样,违法的

想入门的新人 发表于 2022-5-27 20:39:10

当初约定 发表于 2022-5-27 20:02
为什么说是野指针呢?我看它只是没有初始化而已

未初始化就是野指针

dolly_yos2 发表于 2022-5-27 20:47:02

一楼给出的代码肯定是存在问题的, name 未被初始化其指向的地址是不确定的,可以认为是野指针,向其指向的地址写入是(很)可能导致问题的。
但是要注意八楼的代码和一楼的不同,八楼的代码没有向未知地址写入数据,其进行的操作是将常量字符串 "aaaaa" 的(首)地址存储到指针变量 s 中,可以看作是对 s 的初始化。当然,用 const 修饰的指针变量存储字符串常量的地址可能更加恰当,但是比起一楼的代码问题已经小很多了。
至于警告问题要看你的编译器版本和设置,我使用的是 GCC 12.1.0 ,编译期望出现问题的代码从来都是至少加上 -Wall -Wextra 选项,两份代码都触发了警告:一楼的被警告 ,八楼的为 。

amazed 发表于 2022-5-28 02:06:49

66666666666666

豆嘉木 发表于 2022-5-28 07:32:52

{:10_256:}

kerln888 发表于 2022-5-28 08:04:11

{:10_256:}{:10_256:}{:10_256:}{:10_256:}

xueCxueCxueJava 发表于 2022-5-29 12:06:08

{:10_256:}

豆嘉木 发表于 2022-5-29 13:25:37

来了
页: [1]
查看完整版本: 关于字符串输入的问题