C:整数变量随机改变值

C : integer variables randomly change values

刚开始学C语言。不过,我在 C# 和 Java 方面有着良好的历史。

#include <stdio.h>     
#include <stdlib.h>
#include "info.h"
int main()
{
    int day = 24, month = 3, year = 2016;

    char name[] = "Ahmad[=10=]";
    strcpy(name, "Ahmad(strcpy-ed string)[=10=]"); // <-- LINE 8

    printf("%s made this program on %d-%d-%d\n", name, day, month, year);

    return 0;
}

如您所见,值已分配给日、月和年。但问题是输出具有完全不同的值。输出是这样的

Ahmad(strcpy-ed string) made this program on 1920234272-1684352377-1885565556

更有趣的是,如果我删除第 8 行,它会正常工作。为什么会这样?

name只有8个字符的位置,然后你写入其他内存,可能是你的其他变量。

您复制到 name[] 中的字节数超过分配给它的字节数 -- C 不会阻止您这样做。额外的字节覆盖了其他东西,在这种情况下是你的其他变量。您正在创建未定义的行为,这在 C 程序中是一件非常糟糕的事情。