gpt4 book ai didi

c - c 中为全局变量和局部变量分配的内存 : is it different

转载 作者:行者123 更新时间:2023-11-30 18:40:54 26 4
gpt4 key购买 nike

enter image description here The code for output is shown in scren shot..please correct me if i am wrong (CHAR数组的全局声明)

#include<stdio.h>
char name[10]; /* though allocated memory is 10 bytes still it accepts more then 10 chars*/
void main()
{
printf("\n ENter name :\t");
scanf("%s",name);
}

第二种情况:(CHAR数组的本地声明)

#include<stdio.h>
void main()
{
char name[10];/* Now it will only accepts 10 chars NOT MORE */
printf("\n ENter name :\t");
scanf("%s",name);
}

为什么在第一种情况下接受的字符存在差异,它接受超过 10 个,但在第二种情况下恰好是 10 个但不更多。我不知道为什么,但它发生了???

最佳答案

在这两种情况下,输入超过 10 char 的字符串(包括 \0)将调用未定义的行为因为您正在写入过去的数组绑定(bind)(分配的内存)。
在这种情况下,说第一个有效,第二个无效超过 10 char 是没有意义的。任何预期或意外的行为都可以看到。

关于c - c 中为全局变量和局部变量分配的内存 : is it different,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24371325/

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