最近,我读了代码的打击,这让迷茫数组的大小和指针的大小是什么意思?
static string const dirs[6] = {"-n", "-ne", "-se", "-s", "-sw", "-nw" };
int a = sizeof(dirs)/sizeof(*dirs);
而且遗嘱等于阵列,这是6
的尺寸所以我的问题是:
sizeof(dirs)代表什么?总阵列的大小是多少?
sizeof(* dirs)代表什么?
最近,我读了代码的打击,这让迷茫数组的大小和指针的大小是什么意思?
static string const dirs[6] = {"-n", "-ne", "-se", "-s", "-sw", "-nw" };
int a = sizeof(dirs)/sizeof(*dirs);
而且遗嘱等于阵列,这是6
的尺寸所以我的问题是:
sizeof(dirs)代表什么?总阵列的大小是多少?
sizeof(* dirs)代表什么?
sizeof(dirs)
表示整个阵列sizeof(*dirs)
的大小代表了阵列的单个元件的尺寸因此,的sizeof(*显示目录)*元素的数目=的sizeof (dirs),因为元素的数量*每个元素的大小=整个阵列的大小
因此,元素的数量= sizeof(dirs)/ sizeof(* dirs)。
“'sizeof(* dirs)'代表阵列单个元素的大小“ - 更确切地说,是第一个元素的大小。 – 2013-06-23 06:28:17
what does sizeof(dirs) represent? Is the size of the total array?
是的。
what does sizeof(*dirs) represent?
*dirs
是相同与dirs[0]
,所以sizeof(*dirs)
是第一要素的大小。 (以及每个元素的大小,因为它们是相同的)
sizeof(dirs)/sizeof(*dirs)
将是数组中元素的数量。
sizeof
运算符产生提供的操作数的字节大小。 由于*dir
等于dir[0]
,因此sizeof(*dirs)
将以字节返回第一个数组元素的大小,否则sizeof(dirs)
将返回所有数组的字节大小。因此,当你分割这些数字时,你会得到数组中的元素数量。
更多关于sizeof
操作者:http://en.wikipedia.org/wiki/Sizeof http://en.cppreference.com/w/cpp/language/sizeof和http://msdn.microsoft.com/en-us/library/4s7x1k91(v=vs.110).aspx
当sizeof运算符应用于参考,仿佛的sizeof已经应用到对象本身的结果是相同的。
如果未经处理的数组是结构的最后一个元素,那么sizeof运算符将返回没有数组的结构的大小。
sizeof运算符常常用于计算使用所述形式的表达的数组中的元素的数量:在上述回答
sizeof array/sizeof array[0]
一个重要的例外是,如果显示目录被传递到功能可按, sizeof (*dirs)
仍然是数组中一个元素的大小,但sizeof dirs
现在将评估为您环境中指针类型的大小。这是因为传入函数的数组在函数内部使用时只是一个指针。
至少第二个,[数组](http://stackoverflow.com/questions/4810664/how-do-i-use-arrays-in-c)。 – chris
你最喜欢的C++书籍中关于sizeof是什么以及sizeof是干什么的? – AnT
如果你坚持用C++编写数组,那么这样做的首选方式通常是这样的:'template size_t arraylen(T(&)[N]){return N; }' –