#include<stdio.h>
int main()
{
char cardNum[3];
char q[3] = {"abc"};
scanf("%s",&cardNum);
printf("%s %s\n",cardNum,q);
for(int i=0;i<6;i++)
printf("%c\t",q[i]);
return 0;
}
上面代码运行后输入任意三个字母,比如输入aaa
字符数组q就会变成“abcaaa”。这是怎么回事,有没有大佬知道。
数组越界了,q的大小为3个char, 循环里面后三个在访问数组外的内容. 这是未定义行为
这个例子很可能cardNumber的地址恰好在q后面,
你可以输出地址看看是不是这样
printf("q : %p\n", (void*)&q);
printf("cardNum : %p\n", (void*)&cardNum);