C中的strcat()函数会改变程序中的一个随机变量吗



这是我写的代码:

int main(void){
int m = 8;
char digits[] = {};
printf("%dn" , m);
strcat(digits, "0");
printf("%dn" , m);
}

我希望变量m不变,但输出是这样的:

8
0

为什么会发生这种情况?如有任何帮助,我们将不胜感激。

您的数组"digitals"没有分配任何内存,大小为零。当您处理它执行"strcat"时,C会尝试使用变量的地址执行操作,溢出并将内容放入变量所在位置下的内存中。

看看malloc函数,这里有一个解释它的链接。https://www.tutorialspoint.com/c_standard_library/c_function_malloc.htm

最新更新