这些大小对于变量数组和变量指针数组是否正确?

时间:2011-07-21 20:03:56

标签: c++ arrays pointers size

下面代码中的注释中陈述的整个数组的大小和语句是否正确?

//gArray uses sizeof(char)*100 = 1*100 = 100 bytes.
char gArray[100];

//gArray uses sizeof(char)*100*50 = 1*100*50 = 5000 bytes.
char gArray[100][50];

//gArray is a 2D array, each element is a pointer to a char (although
//char data type is irrelevant).
//gArray uses sizeof(void*)*100*50 = (4 or 8) * 100 * 50 = 20000 or 40000 bytes.
char* gArray[100][50];

感谢。

3 个答案:

答案 0 :(得分:6)

sizeof(char)按定义1,因此它将是100,5000和20000或40000(在大多数系统上 - 标准不禁止128位以上的指针)。

答案 1 :(得分:2)

您只需打印出值:

char gArray1[100];

char gArray2[100][50];

char* gArray3[100][50];

std::cout << "gArray1  " << sizeof(gArray1) << "\n"
          << "gArray2  " << sizeof(gArray2) << "\n"
          << "gArray3  " << sizeof(gArray3) << "\n";

我明白了:

gArray1  100
gArray2  5000
gArray3  40000

答案 2 :(得分:0)

如果我没记错的话,

sizeof(char)被c ++标准定义为总是等于1。 所以,不,那些是不正确的。