这是我写的代码:
int main(void){
int m = 8;
char digits[] = {};
printf("%d\n" , m);
strcat(digits, "0");
printf("%d\n" , m);
}
我希望变量m不变,但是输出是这样的:
8
0
为什么会这样?任何帮助将不胜感激。
您的数组'digits'未分配任何内存,大小为零。当您对待它执行'strcat'时,C尝试使用您的变量的地址执行something,溢出,然后将内容放入存储器中的变量[[next到变量的位置。
看一下malloc函数,这里是一个解释它的链接。 https://www.tutorialspoint.com/c_standard_library/c_function_malloc.htm