C++ sizeof运算符与多维表
我遇到了一个问题,因为我不知道操作符的大小是如何工作的。谁能告诉我为什么在下面的代码中有4个C++ sizeof运算符与多维表,c++,sizeof,C++,Sizeof,我遇到了一个问题,因为我不知道操作符的大小是如何工作的。谁能告诉我为什么在下面的代码中有4个 int tab[2] = {1, 5}; int *filePathTab[1] = {NULL}; filePathTab[0] = tab; cout << sizeof(filePathTab[0]); int-tab[2]={1,5}; int*filePathTab[1]={NULL}; filePathTab[0]=选项卡; coutfilePathTab[0]将int*作为其
int tab[2] = {1, 5};
int *filePathTab[1] = {NULL};
filePathTab[0] = tab;
cout << sizeof(filePathTab[0]);
int-tab[2]={1,5};
int*filePathTab[1]={NULL};
filePathTab[0]=选项卡;
coutfilePathTab[0]
将int*
作为其元素。计算机上的anint*
大小为4字节。如果您想知道int*
指向的sizeof
,一个int
,您必须取消对指针的引用:
cout << sizeof(*filePathTab[0]);
cout因为filePathTab[0]
的类型是int*
(filePathTab
是一个指针数组,您考虑的是第0个元素),而计算机上指向int
的指针的大小恰好是4个字节。Sizeof提供了以字节为单位的参数大小。由于指向int的指针长度为4字节(这取决于系统),因此sizeof的输出为4。filePathTab[0]
是int*
。这里有一个提示:sizeof(&tab[0])
给了您什么?那么我如何正确使用它呢?所以它给我8?你需要一个64位的机器(或编译)才能给你8。指针的大小始终是指针的大小,不管指针指向什么。@babbado:您不能使用sizeof
通过对基于filePathTab
的任何表达式应用sizeof
来获取tab
的大小,因为filePathTab
对象对tab
的大小一无所知。filePathTab
对象只是一个指针数组。指针只告诉你事情从哪里开始;它不会告诉你它有多大。因此,filePathTab
中的指针没有关于它们指向的对象大小的任何信息。要获取选项卡的大小,您必须使用选项卡的大小或自己保持其大小。