C ++中sizeof()运算符的功能

问题描述 投票:0回答:1

我编写了一个简单的程序,以了解标准c ++库sizeof()的功能。

其后:

const char* array[] = {
                          "1234",
                          "5678"
                          };

    std::cout << sizeof(array) << std::endl;//16
    std::cout << sizeof (array[0]) << std::endl;//8

    std::cout << printf("%lu\n",sizeof (char) );//1
    std::cout << printf("%lu\n",sizeof (int) );//24
    std::cout << printf("%lu\n",sizeof (float) );//24
    std::cout << printf("%lu",sizeof (double) );//281

可以从输出中看到报告的字符在我的操作系统中的尺寸为1字节,如可预期的。但是我不明白为什么'''array [0]'''的维数是8,因为它包含4个字符,并且对于包含在字符串中的结尾序列“ \ n”至少包含2个字符。因此,我认为数组的第一个元素占用的字节数应为6而不是8。此外,如果增加/减少数组第一个元素中包含的字符数,则其大小不会改变。显然,我错了。如果有人可以向我解释此功能,我将不胜感激。谢谢

c++ std sizeof
1个回答
0
投票

我编写了一个简单的程序,以了解标准c ++库sizeof()的功能。

错误术语。请阅读n3337(C ++标准)。

sizeof是编译时运算符,不是函数

© www.soinside.com 2019 - 2024. All rights reserved.