Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ sizeof运算符与多维表_C++_Sizeof - Fatal编程技术网

C++ sizeof运算符与多维表

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*作为其

我遇到了一个问题,因为我不知道操作符的大小是如何工作的。谁能告诉我为什么在下面的代码中有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]=选项卡;

cout
filePathTab[0]
int*
作为其元素。计算机上的
an
int*
大小为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
中的指针没有关于它们指向的对象大小的任何信息。要获取
选项卡的大小,您必须使用
选项卡的大小或自己保持其大小。