我对sizeof(function)有点困惑。我曾经认为sizeof运算符对类对象、指针和引用进行操作。sizeof运算符可以操作哪些操作数?sizeof(function)有意义吗? 最佳答案 根据:http://en.cppreference.com/w/cpp/language/sizeof"...sizeofcannotbeusedwithfunctiontypes,incompletetypes,orbit-fieldglvalues"或来自2012年C++标准工作草案http://www.open-std.org/jtc
我有一个结构:structKeyPair{intnNum;stringstr;};假设我初始化了我的结构:KeyPairkeys[]={{0,"tester"},{2,"yadah"},{0,"tester"}};我将创建多个不同大小的结构实例。因此,为了能够在循环中使用它并读取它的内容,我必须获取结构中的元素数量。如何获取结构中的元素数量?在这个例子中,我应该得到3,因为我初始化了3对。 最佳答案 如果您正在尝试计算keys数组的元素数量,您可以简单地执行sizeof(keys)/sizeof(keys[0])。重点是sizeof
因为我想在函数中动态查找数组大小,所以我使用了sizeof运算符。但是我得到了一些意想不到的结果。这是一个演示程序,向您展示我想做什么。//------------------------------------------------------------------------------------------#includevoidgetSize(int*S1){intS_size=sizeofS1/sizeof(int);std::cout编译命令:g++demo1.cc-odemo1{fedora12}输出:arraysize(infunction):2arraysize
当我用C++编译我的项目时,MSVC抛出以下错误:error#94:thesizeofanarraymustbegreaterthanzero执行sizeof时在以下行中抛出错误:if(sizeof(MyNamespace::MyClass)==60)MyClass是这样定义的:classMyClass:publicParentClass{public:MyClass(void*pCreate,inta,intb,boolc):ParentClass(pCreate,a,b,c){}virtualinlinevoidmyFunc(){//something}private:virtua
我有两个不同的数据结构,原则上它们应该具有相同的大小,我想知道为什么它们不一样。structpix1{unsignedcharr;unsignedcharg;unsignedcharb;unsignedchara;unsignedchary[2];};structpix2{unsignedcharr;unsignedcharg;unsignedcharb;unsignedchara;unsignedshorty;};然后,我将这些像素中的四个组合在一起,如下所示:structpix4{pix1pixels[4];//orpix2pixels[4]unsignedcharmask;};.
这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:Whydoes‘sizeof’givewrongmeasurement?我有一个名为CBUFFER_PEROBJECT的结构:structCBUFFER_PEROBJECT{D3DXMATRIXFinal;D3DXMATRIXRotation;};在另一个类里面我这样做:...bd.ByteWidth=sizeof(CBUFFER_PEROBJECT);...我发现D3DXMATRIX的大小是64,所以64+64=128(对吗?)。但是我的编译器在耍我(VisualC++),因为当我调试程序时,bd.Byte
这个问题在这里已经有了答案:Sizeofcharacter('a')inC/C++(4个答案)WhyareCcharacterliteralsintsinsteadofchars?(11个答案)关闭9年前。在C中的代码如下:#includeintmain(){charc='a';printf("%d%d",sizeof(c),sizeof('a'));return0;}产生结果1和4?请解释一下逻辑?此外,为什么sizeof(main())的结果是4而sizeof(main)的结果是1:#includeintmain(){printf("%d%d\n",sizeof(main),siz
计算数组中元素的数量很容易:intmyarr[]={1,2,3};intmyarrsize=sizeof(myarr)/sizeof(myarr[0]);但是,如何计算二维数组中的行数?intmy2Darr[][3]={{1,2,3},{4,5,6}};intmy3DarrRows=???这可能吗? 最佳答案 同理。所以要么:sizeof(my2Darr)/sizeof(my2Darr[0])或:sizeof(my2Darr[0])/sizeof(my2Darr[0][0])取决于“行”的含义。
谁能解释一下为什么sizeof函数在下面的代码中返回不同的值?//staticmemberclassone{public:staticconstinta=10;};//nonstaticmemberclasstwo{public:inta;};intmain(){cout 最佳答案 您应该学习的第一件事是sizeof不是一个函数,它是一个运算符,就像+或||.那么关于你的问题。静态成员变量实际上在类中的方式与非静态成员变量相同,因此只有静态成员的类的大小为零。但同时所有对象都需要可寻址,因此具有,这就是为什么sizeof给你1头等舱
如果我有一个固定大小的数组,具体取决于它的定义和使用方式,我通常会使用两种方法之一来引用它。数组类型1:由于它是基于定义的固定大小,我只是在引用它的所有循环中使用该定义。#defineMAXPLAYERS4intplayerscores[MAXPLAYERS];for(i=0;i数组类型2:由于这个数组可以随着项目的添加而增长,我使用sizeof来计算其中的条目数。大小将由编译器转换为常量,因此以这种方式进行不会有任何运行时损失。typedefstruct{fields....}MYSTRUCT_DEF;MYSTRUCT_DEFmystruct[]={{entry1},{entry2}