首页 > 解决方案 > 为什么数组吞下的元素多于其容量?

问题描述

我是 C 的新手。正在研究 Array。导师说括号中的数字定义了数组允许的内存大小。

例如,如果我定义数组

int luckyNumbers[10]

这个数组不能吞下超过 10 个元素。然而,它吞下了超过 10 个,尽管它仍然说它的大小为 10 个。

这就是我所做的

int main()
{
    int luckyNumbers[10];
    size_t n = sizeof(luckyNumbers)/sizeof(int);
    printf("%d\n", n);  // "10"

    luckyNumbers[1] = 80;
    luckyNumbers[2] = 80;
    luckyNumbers[3] = 80;
    luckyNumbers[4] = 80;
    luckyNumbers[5] = 80;
    luckyNumbers[6] = 80;
    luckyNumbers[7] = 80;
    luckyNumbers[8] = 80;
    luckyNumbers[9] = 80;
    luckyNumbers[10] = 80;
    luckyNumbers[11] = 80;
    luckyNumbers[12] = 90;

    printf("%d\n", luckyNumbers[12]); // "90". working right
    size_t n2 = sizeof(luckyNumbers) / sizeof(int); 
    printf("%d", n2);                     //still "10". why not 12?

    return 0;
}

标签: arraysc

解决方案


推荐阅读