C++ 查找c+中int数组的长度+;,它是如何工作的?
有人将此代码用作查找名为C++ 查找c+中int数组的长度+;,它是如何工作的?,c++,C++,有人将此代码用作查找名为a的数组长度的方法: std::cout << "Length of array = " << (sizeof(a)/sizeof(*a)) << std::endl; 我不知道*在这里做什么。我还假设它是一个分数。它在分母里做什么 sizeof(a) 是整个数组的大小 尺寸(*a) 是数组中一个元素的大小,*a是数组的第一个元素,相当于a[0] 这就是为什么需要将sizeof(a)除以sizeof(*a)来获得元素的数量 如果您有一
a
的数组长度的方法:
std::cout << "Length of array = " << (sizeof(a)/sizeof(*a)) << std::endl;
我不知道*
在这里做什么。我还假设它是一个分数。它在分母里做什么
sizeof(a)
是整个数组的大小
尺寸(*a)
是数组中一个元素的大小,*a
是数组的第一个元素,相当于a[0]
这就是为什么需要将sizeof(a)
除以sizeof(*a)
来获得元素的数量
如果您有一个char
数组,因为根据定义sizeof(char)
为1,您不需要除以元素的大小,否则需要
例如,有一个10int
的数组,假设sizeof(int)
是4,数组的大小是10*4=40,这不是元素的数量=>您需要除以元素的大小
int a[10];
std::cout << sizeof(a) << std::endl; // print 40 supposing sizeof(int) is 4
std::cout << sizeof(*a) << std::endl; // print 4 supposing sizeof(int) is 4
std::cout << (sizeof(a)/sizeof(*a)) << std::endl; // print 10 expected
inta[10];
标准::cout
sizeof(a)
是整个数组的大小
尺寸(*a)
是数组中一个元素的大小,*a
是数组的第一个元素,相当于a[0]
这就是为什么需要将sizeof(a)
除以sizeof(*a)
来获得元素的数量
如果您有一个char
数组,因为根据定义sizeof(char)
为1,您不需要除以元素的大小,否则需要
例如,有一个10int
的数组,假设sizeof(int)
是4,数组的大小是10*4=40,这不是元素的数量=>您需要除以元素的大小
int a[10];
std::cout << sizeof(a) << std::endl; // print 40 supposing sizeof(int) is 4
std::cout << sizeof(*a) << std::endl; // print 4 supposing sizeof(int) is 4
std::cout << (sizeof(a)/sizeof(*a)) << std::endl; // print 10 expected
inta[10];
STD::CUT C++,int为4字节。sizeof(*a)获取数组存储的类型的字节大小。
(sizeof(a)/sizeof(*a))
所做的是将数组存储的总字节除以数组类型的字节大小,从而得到长度
例如:您有一个16字节的数组[1,2,3,4],int的大小是4字节。16字节/ 4字节=4,数组长度。 C++,int为4字节。sizeof(*a)获取数组存储的类型的字节大小。(sizeof(a)/sizeof(*a))
所做的是将数组存储的总字节除以数组类型的字节大小,从而得到长度
例如:您有一个16字节的数组[1,2,3,4],int的大小是4字节。16字节/4字节=4,数组的长度。*a
是数组中的第一个元素。
星号*
用于取消对指针的引用,即我们得到存储在该地址的值
原因是size(a)
将返回整个数组的大小(以字节为单位)。
这可能不是数组的大小,因为一个元素中通常有多个字节。
因此,我们必须除以单个元素的大小,因此(sizeof(a)/sizeof(*a))
*a
是数组中的第一个元素。
星号*
用于取消对指针的引用,即我们得到存储在该地址的值
原因是size(a)
将返回整个数组的大小(以字节为单位)。
这可能不是数组的大小,因为一个元素中通常有多个字节。
因此,我们必须除以单个元素的大小,因此(sizeof(a)/sizeof(*a))
如果您知道数据类型,那么一种方法是:
int size = sizeof(a)/sizeof(int)
*a
是对数组第一个元素的引用
sizeof(*a)
给出数组的第一个元素使用的内存量。例如,32位计算机上的标准int元素将使用4位
sizeof(a)
是整个数组的大小。如果您知道数据类型,可以使用以下方法:
int size = sizeof(a)/sizeof(int)
*a
是对数组第一个元素的引用
sizeof(*a)
给出数组的第一个元素使用的内存量。例如,32位计算机上的标准int元素将使用4位
sizeof(a)
是整个数组的大小。意味着a
是数组的名称,sizeof(a)
给出了整个数组的大小,(*a)
只是指向数组的第一个元素的指针,即a[0]
因此包含一个元素(所有元素的大小相等),因此,大小将除以完整数组大小/一个元素的大小,等于插槽或元素的数量。意味着a
是数组的名称,sizeof(a)
给出完整数组的大小,(*a)
只是指向数组第一个元素的指针,即a[0]
因此保留一个元素(所有元素的大小都相同),因此大小将除以一个元素的完整数组大小/大小,等于插槽或元素的数量。这可能会有所帮助:Turbo具有std
?建议:切换到与C++11兼容的编译器,例如最近的(可能在Windows上)或。读一本好书,读一读。在你的问题中提供一些。使用此选项可能会有所帮助:Turbo具有std
?建议:切换到与C++11兼容的编译器,例如最近的(可能在Windows上)或。读一本好书,读一读。在你的问题中提供一些。使用我不确定int
总是4字节。它可能有2个字节。在某些VLIW处理器上,它可能是一个64位的字。你可以找到C++的代码实现:<代码> siZoof(char)< /C>和<代码> siZeOf(int)< /C> > 1(16位<代码> char < /C> >)<代码> int <代码>不必是4字节。唯一的要求是它必须至少为16位,并且至少与short
一样大。是的,现在很多实现都是32位的,但不要假设它总是32位的