linkstartlw 发表于 2021-9-17 16:15:54

C语言字符串数组

为什么我定义的字符串数组长度为12,我输入超过12的字符串,它没有输出11个字符,反而是全部输出,这是为什么?求各位大佬指教呀!!(新手图片插入不上去)

#include<stdio.h>
int main()
{
        char a;
        printf("input string:\n");
        gets(a);
        puts(a);
}

wp231957 发表于 2021-9-17 16:24:46

越界溢出,可能成功可能崩溃
所以要避免,不要侥幸

han125416866 发表于 2021-9-17 17:54:05

在内存中定义的不同类型的数组地址段是不一样的。
假如:(只是假设不是真的地址)
你定义一个字符数组a(地址是00000001~0000000A),系统会开辟出一段地址是字符数组地址(00000001~00000100),如果你输入超过10个元素的时候,系统会把超出的部分放在从0000000B开始的往后的地址中。
可能我说的不太严谨,意思懂就行,尽量避免越界,你可以自己创建2个不同类型的数组分别打印出每个数组的首地址和每个元素的地址验证下看看。
页: [1]
查看完整版本: C语言字符串数组