下面代码中的注释中陈述的整个数组的大小和语句是否正确?
//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];
感谢。
答案 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。
所以,不,那些是不正确的。