我知道C++并且知道函数sizeof本身,但我需要编写自己的sizeof函数,所以请解释一下它是如何工作的?它对参数有什么作用? 最佳答案 sizeof是编译器内置运算符。它由编译器在编译时评估,其背后没有运行时代码。你不能自己写。询问这个问题类似于询问您将如何编写自己的return版本。 关于c++-大小如何工作?我怎么写自己的?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/
我试图简单地打印出数组中包含的值。我有一个名为“结果”的字符串数组。我不知道它到底有多大,因为它是自动生成的。根据我的阅读,您可以通过以下方式确定数组的大小:sizeof(result)/sizeof(result[0])这是正确的吗?因为对于我的程序,sizeof(result)=16和sizeof(result[0])=16所以代码会告诉我我的数组大小为1。但是这似乎不正确,因为如果我手动打印出这样的数组值:std::cout...然后我看到了我正在寻找的结果值。该数组的长度/大小超过100个。似乎确定数组的大小/长度应该非常简单......所以希望我只是在这里遗漏了一些东西。我有
我试图简单地打印出数组中包含的值。我有一个名为“结果”的字符串数组。我不知道它到底有多大,因为它是自动生成的。根据我的阅读,您可以通过以下方式确定数组的大小:sizeof(result)/sizeof(result[0])这是正确的吗?因为对于我的程序,sizeof(result)=16和sizeof(result[0])=16所以代码会告诉我我的数组大小为1。但是这似乎不正确,因为如果我手动打印出这样的数组值:std::cout...然后我看到了我正在寻找的结果值。该数组的长度/大小超过100个。似乎确定数组的大小/长度应该非常简单......所以希望我只是在这里遗漏了一些东西。我有
我有这样的结构(由于某种原因我不能只使用数组):structOperatorData{charm_record_0[RIX_OPERATOR_CONFIG_SIZE];charm_record_1[RIX_OPERATOR_CONFIG_SIZE];//....charm_record_9[RIX_OPERATOR_CONFIG_SIZE];};我正在尝试在编译时计算字段数量:enum{fieldsAmount=sizeof(OperatorData)/sizeof(OperatorData::m_record_0)};并且编译器会报告这样的消息:Error:#245:anonstat
我有这样的结构(由于某种原因我不能只使用数组):structOperatorData{charm_record_0[RIX_OPERATOR_CONFIG_SIZE];charm_record_1[RIX_OPERATOR_CONFIG_SIZE];//....charm_record_9[RIX_OPERATOR_CONFIG_SIZE];};我正在尝试在编译时计算字段数量:enum{fieldsAmount=sizeof(OperatorData)/sizeof(OperatorData::m_record_0)};并且编译器会报告这样的消息:Error:#245:anonstat
templatestructS{voidfoo(){sizeof(S);//(*)sizeof(S);}};intmain(){Ss;s.foo();return0;}这段代码编译得很好(VS2010),但我对(*)有疑问字符串。S不是完整类型,不像S在我看来,编译器怎么知道它的大小?标准对这种情况有什么看法,格式正确吗sizeof? 最佳答案 nameS里面的structS定义是指注入(inject)的类名S,根据14.6.1/2(C++03)不需要显式参数列表Withinthescopeofaclasstemplatespeci
templatestructS{voidfoo(){sizeof(S);//(*)sizeof(S);}};intmain(){Ss;s.foo();return0;}这段代码编译得很好(VS2010),但我对(*)有疑问字符串。S不是完整类型,不像S在我看来,编译器怎么知道它的大小?标准对这种情况有什么看法,格式正确吗sizeof? 最佳答案 nameS里面的structS定义是指注入(inject)的类名S,根据14.6.1/2(C++03)不需要显式参数列表Withinthescopeofaclasstemplatespeci
为什么下面的代码输出4?char**pointer=newchar*[1];std::cout我有一个指针数组,但它的长度应该是1,不是吗? 最佳答案 pointer是一个指针。它是一个指针的大小,在您的系统上是4个字节。*pointer也是一个指针。sizeof(*pointer)也将是4。**pointer是一个字符。sizeof(**pointer)将为1。请注意,**pointer是一个字符,因为它被定义为char**。数组new`ednevers的大小进入这个。请注意,sizeof是编译器运算符。它在编译时呈现为常量。任何
为什么下面的代码输出4?char**pointer=newchar*[1];std::cout我有一个指针数组,但它的长度应该是1,不是吗? 最佳答案 pointer是一个指针。它是一个指针的大小,在您的系统上是4个字节。*pointer也是一个指针。sizeof(*pointer)也将是4。**pointer是一个字符。sizeof(**pointer)将为1。请注意,**pointer是一个字符,因为它被定义为char**。数组new`ednevers的大小进入这个。请注意,sizeof是编译器运算符。它在编译时呈现为常量。任何
以下代码打印20,即sizeof(z)为20。#includeclassBase{public:inta;};classX:virtualpublicBase{public:intx;};classY:virtualpublicBase{public:inty;};classZ:publicX,publicY{};intmain(){Zz;cout而如果我在这里不使用虚拟基类,即对于以下代码:sizeof(z)是16。#includeclassBase{public:inta;};classX:publicBase{public:intx;};classY:publicBase{pub