gpt4 book ai didi

c - 给出输入时字符串和数组的区别

转载 作者:行者123 更新时间:2023-11-30 14:59:05 25 4
gpt4 key购买 nike

我写了两个这样的程序,我输入'hello'

程序1:

#include <stdio.h>
#include <string.h>

int main(void)
{

char arr[10];
scanf("%s", arr);
printf("%s\n", arr);
return 0;
}

输出:你好

程序2

#include <stdio.h>
#include <string.h>
int main(void)
{

char *str;
scanf("%s", str);
printf("%s\n", str);
return 0;
}

输出:段错误

根据我的理解,数组名称在运行时将更改为char *类型。我认为 str 已经是 char * 所以它应该能够在第二种情况下指向一个字符串。

1) 在这种情况下,数组如何工作而 str 却不能?

2)这个程序中arr和str的区别从哪里开始?为什么它对程序员来说应该是显而易见的?

最佳答案

当您将未初始化的指针传递给 scanf() 时,这意味着未定义的行为。因此,在调用 scanf 之前,使用 malloc 或 calloc 为指针分配内存。

关于c - 给出输入时字符串和数组的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43015056/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com