首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

为什么我不能对另一个类的静态char []执行sizeof?

这个问题是关于C++编程语言的,涉及到sizeof操作符和静态char数组的概念。

在C++中,sizeof操作符用于计算对象或类型所占用的字节数。当sizeof操作符应用于静态char数组时,它将返回整个数组所占用的字节数,而不是指针所占用的字节数。

例如:

代码语言:c++
复制
char arr[] = "Hello, world!";
int size = sizeof(arr);

在这个例子中,size的值将是13,因为这个字符串包含13个字符(包括空字符)。

然而,如果您尝试对另一个类的静态char数组执行sizeof操作,您将会得到一个编译错误。这是因为sizeof操作符只能用于静态char数组或基本数据类型,而不能用于其他类型的数组或对象。

如果您需要获取动态分配的char数组的大小,您可以使用sizeof操作符与指针一起使用,例如:

代码语言:c++
复制
char* ptr = new char[10];
int size = sizeof(char) * 10;

在这个例子中,size的值将是10,因为我们使用sizeof操作符计算了char类型占用的字节数,然后乘以数组的长度。

总之,您不能对另一个类的静态char数组执行sizeof操作,因为sizeof操作符只能用于静态char数组或基本数据类型。如果您需要获取动态分配的char数组的大小,您可以使用sizeof操作符与指针一起使用。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

为什么自动化流程执行

很多人经常会有这个问题,为什么自动化流程执行。...流程第二步:请检查自动化流程是否有执行请来到后台【流程日志】,如果运行成功流程就会显示【执行成功】并有一个【运行id】。...自动化流程执行失败第三步:确认流程是上线状态,但是流程没有执行为什么?如果流程确认是上线状态,需要确定你流程是否符合你设定触发条件,如果没有达到对应条件,是不会触发。...常见一些没有触发条件如下:【定时查询应用】:比如腾讯文档、邮箱、mysql等应用目前都是定时查询,而不是实时触发,所以需要稍作等待【触发条件不满足】:在设定了执行条件、查询条件等情况,由于数据设定情况没有满足...,被判断了没有执行【流程执行过程中修改】:在有【延迟执行流程上线后,进行修改,会导致后续流程执行

1.5K30
  • 面试总结-C++

    起到了隐藏作用 在 static 成员变量属于整个所拥有,对所以对象只有一份拷贝 在 static 成员函数属于整个所拥有,这个函数接收 this 指针,因而只能访问 static...eg: struct sTest { int a; //sizeof(int) = 4 char b; //sizeof(char) = 1 short c; //sizeof(short) =...见为什么不能建立引用数组 将引用作为函数参数时,可以避免对变量或者对象复制,因此不会调用对象拷贝构造函数。当希望传入引用参数不被改变时,使用const引用。...因为静态成员属于整个,而不属于某个对象,如果在内初始化,会导致每个对象都包含该静态成员,这是矛盾。...静态代码在编译过程中已经被载入可执行程序,程序运行时将不再需要该静态库,因此可执行程序体积比较大。

    2.1K11

    C++面试知识总结

    栈:执行函数时,函数局部变量存储在栈中,执行结束后自动释放该内存区域,栈内存分配运算内置与处理器指令集中。...引用一旦被初始化为指向一个对象,它就不能被改变为另一个对象引用。 指针在任何时候都可以改变为指向另一个对象。 引用创建和销毁并不会调用拷贝构造函数。...若操作数具有类型char、unsigned char或signed char,其结果等于1。 当操作数是指针时,sizeof依赖于系统位数。 当操作数具有数组类型时,其结果是数组总字节数。...2.23 有一个char * 型指针刚好指向一些int 型变量, 想跳过它们。 为什么((int *)p)++; 不行? 类型转换实质“把这些二进制位看作另一种类型, 并作相应对待”。...在static成员变量属于整个所拥有,对所有对象只有一份拷贝。 在static成员函数属于整个所拥有,这个函数接收this指针,因而只能访问static成员变量。

    1.7K41

    C++面试题,阿里、百度、腾讯、华为、小米100道C++面试题目及答案

    正确答案:建议加上vitrual,代码是写给人看 错题解析:申明没有关系。 不过,总是喜欢显式申明,使得代码更加清晰。...=“” 缺点:多执行了n-1次逻辑判断,并且打断了循环“流水线”作业,使得编译器不能对循环进行优化处理,降低了效率。=“” 2)优点:循环效率高。缺点:程序简洁。...缺点:多执行了n-1次逻辑判断,并且打断了循环“流水线”作业,使得编译器不能对循环进行优化处理,降低了效率。 2)优点:循环效率高。缺点:程序简洁。...2)有些编译器可以对const常量进行调试,不能对宏调试。 15、头文件中ifndef/define/endif干什么用? 正确答案: 防止重复定义 16、C++中为什么用模板。...让应试者进入一种虚假安全感觉后,拿出这么一个小节目:下面的代码片段输出是什么,为什么

    2.2K20

    sizeof 操作符详解

    指针变量sizeof 学过数据结构你应该知道指针是一个很重要概念,它记录了另一个对象地址。既然是来存放地址,那么它当然等于计算机内部地址总线宽度。...为什么受伤总是? 请不要沮丧,我们来好好琢磨一下sizeof定义 —— sizeof结果等于对象或者类型所占内存字节数。...+ sizeof( last item ) + sizeof( trailing padding ) 8.sizeof sizeof值等于中成员变量所占用内存字节数。...因为在程序编译期间,就已经为static变量在静态存储区域分配了内存空间,并且这块内存在程序整个运行期间都存在。 而每次声明了A一个对象时候,为该对象在堆上,根据对象大小分配内存。...因为只有非静态成员变量在新生成一个object时候才需要自己副本。 所以每个非静态成员变量在生成新object需要内存,而function是不需要

    75530

    C++基本概念_c语言 c++区别

    静态函数存在意义? 答:1静态私有成员在外不能被访问,可通过静态成员函数来访问; 2当构造函数是私有的时,不像普通那样实例化自己,只能通过静态成员函数来调用构造函数。 15....答案:全局对象构造函数会在main 函数之前执行。 37. 当一个A 中没有生命任何成员变量与成员函数,这时sizeof(A)值是多少,如果不是零,请解释一下编译器为什么没有让它为零。...析构函数为什么要虚拟? 答案:构造函数调用顺序:基构造函数—对象成员构造函数—派生构造函数;析构函数调用顺序与构造函数相反。析构函数虚拟是为了防止析构彻底,造成内存泄漏。 47....(*****************************************) 当一个中,存在一个指向另一个对象指针时,对指针运算符进行重载,那么当前对象可以通过指针像调用自身成员一样调用另一个成员...为什么? // 构造子类 对象时,要先去调用父构造函数。 然后在来调用子类构造函数。 答:执行结果是I am A 因为b对象构造时调用基A构造函数A(),得此结果。

    2.5K30

    老司机出品——源码解析之从Block说开去

    2.block中我们是不能对捕获变量进行赋值操作,只要这么做编译器就会警告。为什么苹果会做出这样限制呢?因为在block里对捕获自动变量复制其实是有歧义。...---- 关于Block对外部赋值操作 上文中老司机说到,Block不能对其捕获局部(非静态)变量值进行赋值操作。既然有这些限制,那么一定有可以Block中可以做赋值操作变量,他们都有谁呢?...这个真不是赋值,不能啊,因为在ARC中赋值时候如果附加修饰符的话默认认为生成变量是以__strong修饰符修饰,而编译器遇到__strong修饰符会自动copy。。。...怎么给你做例子啊。。。反正老司机这么写虽然不是同一个block,但是应该是同一型block,足以说明问题。另外老司机说过,编译器会按需调用copy方法。...事实上block执行前self被销毁还好,顶多是执行。但是如果在block执行过程中,self被销毁就会造成不可预估后果。

    45830

    C++:内存管理|new和delete

    填空题: sizeof(num1) = ____40;sizeof(char2) = ____5; strlen(char2) = ____4; sizeof(pChar3) = ____4/8;...堆用于程序运行时动态内存分配,堆是可以上增长。 4. 数据段--存储全局数据和静态数据。 5. 代码段--可执行代码/只读常量。...同理如果delete p9也是这样问题,他并不懂得delete [ ]释放机制,会导致释放位置错误而崩溃!!! 如上图,把析构函数给注释掉了,为什么这个时候free就成功了???...A对象相同大小一段空间,还不能算是一个对象,因为构造函数没 有执行 A* p1 = (A*)malloc(sizeof(A)); new(p1)A; // 注意:如果A构造函数有参数时,此处需要传参...; return 0; } 你可能会觉得说,明明new就可以完成初始化这个工作,那为什么我们还要用malloc、再用定位new初始化,这不是多次一举吗??

    11910

    C语言进阶-动态内存管理柔性数组

    原来空间数据不发生变化 realloc()将返回原指针 情况2:原有空间之后没有足够大空间 堆空间上找到另一个空间(合适大小连续空间,足够所要开辟空间大小)来开辟 同时将原来开辟空间所存有的内存进行拷贝...strcpy(str, "hello world");//strcpy不能对空指针进行拷贝操作,会报错 printf(str);//空指针打印不出什么 } 例题2: char *GetMemory...); return 0; } 示图: C/C++程序内存分配几个区域: 栈区(stack):在执行函数时,函数内局部变量存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。...栈区主要存放运行函数而分配局部变量、函数参数、返回数据、 返回地址等 堆区(heap):一般由程序员分配释放, 若程序员释放,程序结束时可能由OS回收 (分配方式类似于链表) 数据段(静态区)(static...)存放全局变量、静态数据(程序结束后由系统释放) 代码段:存放函数体(成员函数和全局函数)二进制代码 柔性数组 概念: C99 中,结构中最后一个元素允许是未知大小数组,这就叫做『柔性数组

    63620

    搜罗面试题总结(一)

    具体: char *p = (char *)malloc(100); int ip[10]; sizeof(指针) 32位系统是4字节 sizeof(ip) 40 sizeof...在C++程序中调用被C编译器编译后函数,为什么要加 extern “C” ? 告诉编译器该部分语法按照C语言语法编译 8....一个有基、内部有一个其他成员对象,请问该子类、基、和内部类成员对象构造函数执行顺序? 先调用基构造函数、再调用其他成员构造函数、最后调用自己构造函数。 先构造、后析构。 9....–>code区 深度探索C++对象模型: sizeof(空) 为何是1 ? 那是被编译器插进去一个char ,使得这个class不问同实体(答object)在内存中配置独一无二内地址。...容也就是说这个char是用来标识不同对象

    64310

    嵌入式软件工程师笔试面试指南-CC++

    ,而a>b返回值为 false,程序执行表达式n=c>d,所以,n值保持为初值2。...因为如果在使用了该头文件每个C语言文件中定义静态变量,按照编译步骤,在每个头文件中都会单独存在一个静态变量,从而会引起空间浪费或者程序错误所以,推荐在头文件中定义任何变量,当然也包括静态变量。...友元提供了一种 普通函数或者成员函数 访问另一个私有或保护成员 机制。也就是说有两种形式友元: (1)友元函数:普通函数对一个访问某个私有或保护成员。...在一切初始化工作结束后,main函数会被调用,如果某个构造函数被执行,那么首先基成员变量会被初始化。 当一个另一个成员变量时,如何对其进行初始化?...这也很简单,静态成员函数对于每个来说只有一份代码,所有的对象都共享这一份代码,他也没有要动态邦定必要性。 5.为什么C++不支持友元函数为虚函数?

    1.6K11

    C++ Qt常用面试题整理(不定时更新)

    2.static和const使用 1.static:静态变量声明,分为局部静态变量,全局静态变量,静态成员变量。也可修饰成员函数。...静态成员变量:被所有对象共享,包括子对象。必须在外初始化,不可以在构造函数内进行初始化。 静态成员函数:所有对象共享该函数,不含this指针,不可使用中非静态成员。...难记点(是感觉很SB,除了面试,实际工作中完全没遇到): const char* p = new char(‘a’): 表示p指向内容不可修改但是p可修改。...指针在初始化后可以改变,引用不能进行改变,即无法再对另一个同类型对象进行引用。sizeof指针可以得到指针本身大小,sizeof引用得到是变量本身大小。指针传参还是值传递,引用传参传是变量本身。...注意:对象包含虚函数表,只有需指针,才包含虚函数表,派生会生成一个兼容基虚函数表。 6.常用数据结构 1.vector:向量,连续存储,可随机访问。

    3.8K10

    Java到底是不是一种纯面向对象语言?

    到了更后来,在一次JVM学习过程中,有了新发现: JVM 在创建对象时候,实际上会创建两个对象: 一个是实例对象。 另一个是Class 对象。...一个是实例对象 emp ;另一个则是 Class对象,我们可以通过 Employee.class 引用到它;这个 Class 对象拥有所有的这个定义静态变量和静态方法,同时,如果我们访问 通过 emp...这也揭开了另一个迷:为什么静态内容在一个对象中(不管是emp还是emp2)改变了,在另一个对象中也同时改变,因为这两个对象改变都是在 Employee.class 同一个对象里面的内容。...并且,由于自动拆装箱,我们可以把一个原始类型值赋值给它对应包装引用。但是我们仍然不能对这些原始类型做对象操作——我们需要创建对应包装对象。 例如: ?...) 使用实际例子来说明,为什么我们更应该使用 “原始类型”: “原始类型”有更快速度(例如,下面的代码执行,在我们机器上需要9秒,但当我把 Long 改成 long 之后,0秒内就完成了) ?

    40510

    C语言面试题汇总(持续更)「建议收藏」

    大家好,又见面了,是你们朋友全栈君。 笔者最近在找工作,因此对应聘C/C++嵌入式开发工程师容易被问到,或者经常搞不清楚问题做一个汇总,也希望能对找工作小伙伴起到帮助参考作用。...,和普通局部变量一样 ② 存储静态局部变量分配在data/bss段,普通局部变量在栈上 ③ 生命周期:因为存储不同,静态局部变量生命周期变长了,直到程序结束 ——所以当静态局部变量离开作用域后...(为什么又是这个) 1、堆栈空间分配区别 栈(操作系统):由操作系统(编译器)自动分配释放 ,存放函数参数值,局部变量值等。其操作方式类似于数据结构中栈。...)+5 y = ++*px; //px内容加上1之后赋给y,++*px相当于++(*px) y = *px++; //相当于y=(*px)++ py = px; //把一个指针值赋给另一个指针...一个int占4个字节,sizeof就是4。在32位系统上,对任意指针求sizeof得到结果都是4.?? 10.

    1.1K30

    万字长文【C++】高质量编程指南

    ,如果在内部,就会多执行很多次逻辑判断,并且破坏了循环“流水线”作业,使得编译器不能对循环进行优化处理,降低了效率。...8.2.内存管理 8.2.1.内存分配方式 1,静态存储区域分配:内存在程序编译时候就已经分配好,这块内存在程序整个运行期间都存在,例如全局变量,static变量 2,在栈上创建:在执行函数时候,..."world",位于静态存储区,内容是 world\0 char *p = "world"; //常量字符串内容是不可以被修改 p[0] = 'X';//运行时出错,编译器不能发现该错误 2,内容复制与比较...char a[] = "hello world"; char *p =a; sizeof(a);//12 加'\0' sizeof(p);//4 得到是一个指针变量字节数,相当于 sizeof(char...0) // 错误,缺省值出现在函数定义体中 { ⋯ } 为什么

    1.5K20

    总结---5

    2,那么char型变量和数组用什么值给其初始化比较安全?这种提问没有见过,只能说初始化会使数组指向其他内存单元,导致不确定值。最好是在数组初始化时候赋给你需要用值。...6.一个有基、内部有一个其他成员对象,构造函数执行顺序是怎样。...(Autodesk) 答:先执行(如果基当中有虚基,要先执行虚基,其他基则按照声明派生顺序依次执行),再执行成员对象,最后执行自己。 7....char a[] = "hello world"; char *p = a; cout<< sizeof(a) << endl; // 12 字节 cout<< sizeof(p) << endl...顺带提一句,也许你可能会问,即使不用关键字const,也还是能很容易写出功能正确程序,那么为什么还要如此看重关键字const呢?也如下几下理由: 1).

    864100
    领券