C/C++中的sizeof相关【面试?】

[指针八]有关指针的面试题 有关指针的经典面试题           C语言为何如此长寿并实用?C++为什么有那么多精彩?指针可以说是C/C++中的灵魂所在,虽然早期中pascal也有指针,但是和C/C++比起来不是一个级别的.今天为大家深入浅出的解析一下指针的有关笔试,面试题.所有题目来源网络,分析是我写的... 0.预备知识,最基础的指针 其实最基础的指针也就应该如下面代码: int a; 阅读详情


数组和指针的细微区别

#include <iostream>
using namespace std;

//sizeof的指针运算值相关
int GetSize(int data[]){
	return sizeof(data);
}
int main() {

	int list[] = {1,3,36,56,76,34,61,76,12,4};//  array of 10 elements
	int list_size = sizeof(list);

	int *list2 = list;
	int size2 = sizeof(list2);

	int size3 = GetSize(list);

	cout<<list_size<<endl;
	cout<<size2<<endl
			<<size3;

	return 0;
}
/**
 * 分析:
 * list_size是一个数组,sizeof(list_size)是求数组的大小,这个数组包含10个整数,每个整数占4个字节,因此是40个字节。
 * size2声明为指针,尽管它指向list,但是它的本质还是一个指针,在32位系统中对任意指针求sizeof,得到的结果都是4.
 * size3。在C/C++中当数组作为函数的参数进行传递时,数组就自动退化为同类型的指针,size3的结果仍为4
 */

输出结果:

40

4

4



字符串相关:(完美笔试)

#include <iostream>
using namespace std;
//字符串相关的sizeof
void func(char p[10])
{
	printf("%d\n",sizeof(p));        // 4
}

void func(char (&p)[10])
{
	printf("%d\n",sizeof(p));        // 10
}

int main(void)
{
	char array[] = "abcdefg";
	printf("%d\n",sizeof(array));        // 8

	char *p = "abcdefg";
	printf("%d\n",sizeof(p));            // 4

	printf("%d\n",sizeof(char[2]));     // 2
	printf("%d\n",sizeof(char&));       // 1
	return 0;
}
输出:

8
4
2
1



函数:

#include <iostream>
using namespace std;


class CBase{
public:
	void func(){
		Print();
	}
	virtual void Print(){
		cout<<"CBase::Print"<<endl;
	}
};

class CDerived:public CBase{
public:
	virtual void Print(){
		cout<<"CDerived::Print"<<endl;
	}
};


int main(void)
{
	CDerived c;
	CBase *p = &c;
	cout<<sizeof(*p)<<endl;  //  4
	cout<<sizeof(p)<<endl;   //  4  sizeof(指针) == 4
	cout<<sizeof(c)<<endl;   //  4
	return 0;
}



浅谈C++结构体和类,对象的大小该如何计算?



C/C++面试八股文汇总 以对象管理资源,利用的就是C++构造的对象最终会被对象的析构函数销毁的原则。上述的的申请、使用、释放资源的程序较为简单,但是如果程序很复杂的时候,需要为所有的new 分配的内存delete掉,导致极度臃肿,效率下降,更可怕的是,程序的可理解性和可维护性明显降低了,当操作增多时,处理资源释放的代码就会越来越多,越来越乱。栈在函数调用时,第一个进栈的是主函数中后的下一条指令(函数调用语句的下一条可执行语句)的地址,然后是函数的各个参数,在大多数的C编译器中,参数是由右往左入栈的,然后是函数中的局部变量。 阅读详情

相关推荐

【C++基础】sizeof 与 strlen 的本质区别:面试高频考点与历年真题深度解析

在 C/C++ 开发中,sizeof和strlen是处理内存和字符串的两把 “尺子”,但它们的工作原理和应用场景截然不同。sizeof如同编译时的 “静态尺子”,精准测量数据类型的内存占用;而strlen则像运行时的 “动态扫描仪”,遍历字符串计算实际长度。这两者的区别是面试的高频考点,尤其在大厂技术面试中频繁出现。本文将结合真题,彻底掌握这对 “黄金搭档”,轻松应对校招和社招!

byte轻骑兵的技术小窝 3307

c语言中的sizeof(面试、笔试常考)

大部分公司在招聘技术职位面试的时候,都会考c语言基础,而sizeof是他们最喜欢考的知识点,现总结如下: 1、定义 sizeof是C语言的一种单目操作符,它并不是函数。sizeof操作符以字节形式给出了其操作数所占存储空间的大小。操作数可以是一个表达式或括在括号内的类型名。操作数所占存储空间的大小由操作数的类型决定。作用就是返回一个对象或者类型所占的内存字节数。 2、语法 sizeo...

whusl的专栏 627

避坑指南:MTK平台Widevine L1密钥安装全流程详解(含SP META工具使用与Log分析)

本文详细解析了MTK平台实现Widevine L1认证的全流程,涵盖密钥申请、格式转换、安全烧录等关键步骤,特别针对Trustonic TEE环境下的SP META工具使用与日志分析提供实用指南。帮助开发者规避常见错误,确保DRM密钥安全部署,满足高端内容保护需求。

weixin_27219587的博客 476

关于sizeof的笔试面试题详解

注意:sizeof是编译期计算出结果的,这一点对后面的理解很重要。 通过搜集资料和博主之前笔试面试中的经验,总结出三个方面

Leo的专栏 6830

汇川Easy系列PLC系统PID指令编程应用(增量型)

增量式PIDS7-1200/1500增量式PID(输出归一化、支持PWM输出)_西门子1200pid算法公式-优快云博客文章浏览阅读1k次。本文介绍了S7-1200/1500 PLC中增量式PID算法的应用,包括输出归一化和PWM输出。通过详细解析,阐述了PID输出如何限制在0.0-1.0之间,并且如何将PID输出与PWM占空比关联,适用于温度等控制场景。

RXXW_Dor的博客 1422

群辉NAS映射为本地盘符

鼠标右击网络→映射网络驱动器→以上适合通过局域网操作,采用ZeroTier组网后,也可以按照以上步骤实现,这时使用 “虚拟局域网”的IP地址。

dgnankai的专栏 5774

常问面试题:C++中sizeof的陷阱及应答

C++中sizeof是经常被问到的一个概念,比如,下面的几个关于sizeof的面试题反复出现在各大IT公司的技术面试当中,我们有必要完全理解并掌握。 注:在曾经面试大公司时,我的确被问到过这样的问题。 面试题:定义一个空的数据类型,里面没有任何成员变量和成员函数,对该类型求sizeof,得到的结果是多少? 答案:是1,为什么不是0?空类型的实例中不包含任何信息,本来求sizeof应该

程序媛想事儿 4463

让 ABAP Screen Variant 安稳上车:SHD0 与 SHD0_MANDT 的 Transport 全攻略

摘要: SAP项目常需优化交易码界面,通过SHD0的Transaction Variant和Screen Variant可实现字段精简、默认值预设及权限控制,避免修改标准代码。但跨系统迁移时易出现变式丢失或版本兼容问题。核心概念包括: Screen Variant:针对单个屏幕的字段属性配置(跨Client); Transaction Variant:串联多屏幕变式(分跨Client和Client-specific); 版本差异:4.70/6.x后需区分SHD0(跨Client)与SHD0_MANDT(Cl

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 225

完美世界android面试题,完美世界笔试题和面试题答案(2019完整版)

小编如下为大家分享的是完美世界的完整版笔试题,大家敬请收藏和练习!1、设有矩阵A1(30*35)、A2(35*15)、A3(15*5)、A4(5*10),M=A1*A2*A3*A4,下列组合计算M所需数乘次数最少的是:A、(A1(A2(A3A4))) B、(A1((A2A3)A4)) C、((A1A2)(A3A4)) D、((A1(A2A3))A4) E、(((A1A2)A3)A4)2、在32位机...

weixin_26706567的博客 369

AWS SQS跨账户访问失败排查指南

在使用AWS SQS(Simple Queue Service)时,跨账户访问是常见的业务场景。例如,账户A的应用程序向队列发送消息,账户B的消费者从队列拉取消息。尽管AWS官方文档明确支持此类配置,但在实际应用中,由于权限模型的复杂性,开发者和运维人员常会遇到“策略已配置但无法接收消息”的问题。通过本文的逐步排查指南,您不仅可以解决当前问题,还能深入理解AWS跨账户访问的权限模型。接收方账户的用户或角色必须同时附加IAM策略,显式授权操作目标队列。尽管策略看似允许接收方操作,实际测试中却返回空消息或。

探索云原生与智能化驱动下的安全运维新范式。关注DevSecOps、可观测性、AIOps等前沿领域,与您共赴技术前沿。 458

【C2000系列DSP的Bootloader详解】如何打包源文件为库文件且加密仅授权使用,一步步教你如何实现

如果想要在 TI 的 CCS 开发环境中为 C2000 系列 MCU 生成 lib 库文件,并对这些库文件进行加密保护,确保只有授权方(持有密钥)才能调用和使用,以此保护源代码的知识产权。

昔时扬尘处 176

C/C++ 高频八股文面试题1000题(一)

整个系列将分为 多 篇陆续发布,每篇50道题,本文为 第一篇。

m0_73443478的博客 2117

Allegro快速编辑丝印文字操作指导

选择setup-Application Mode-placement edit。Allegro支持丝印文字的编辑,下面介绍快速编辑丝印文字的两种方法如下。这个功能还支持拷贝粘贴,可以从其它地方拷贝过来,免去了书写的麻烦。出现text edit窗口,输入自己需要的文字,点击ok。鼠标移动到丝印文字位置,文字会被高亮起来。Allegro快速编辑丝印文字操作指导。点击丝印文字,丝印会被高亮起来。选择Text edit 命令。输入需要更改后的文字,如下。右击选择text edit。以编辑下方丝印文字为例。

weixin_54787054的博客 4192

C/C++ 面试题 (收集)

1, 计算sizeof表达式和strlen表达的值(32位操作系统)。 char s1[] = “”; char s2[] = “Hello World”; char *p = s2; char *q = NULL; void *r = malloc(100); sizeof(s1) = 1;  sizeof(s2) = 12;  sizeof(p) = 4;  sizeof(q) ...

liufangwuxiangci的博客 387

通过情感分类实例 详细介绍如果借助Huggingface平台 完成Transformers模型运行(包括配置环境-tokenizer-Model-输出头-预测)

attention_mask和padding是配套使用的,当人为去修改padding的时候,也要把attention_mask里面的参数进行修改。下载Huggingface包,Huggingface可以说是一个社区,集成了很多nlp的模型、数据集、预训练权重文件等等,并且免费,只需要pip install下载即可。那么用什么做分类就选择什么输出头,就import什么东西。代码中使用了自动分词器选择,它是由checkpoint指定的预训练模型关联的,不用我们自己选择tokenizer,它自动帮我们选择好了。

LZL2020LZL的博客 1135

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

C/C++ 面试复习笔记(4)

内存颠簸是指系统在频繁地进行内存页的换入换出操作,导致大量的磁盘 I/O,系统性能急剧下降的现象。当系统的物理内存不足,而进程对内存的需求又不断变化时,就容易出现内存颠簸。例如,一个进程频繁地访问不同的内存页,而这些页在内存中频繁地被换出和换入。在 Linux 系统中,可以通过以下方法避免或解决内存颠簸问题:增加物理内存:如果物理内存不足是导致内存颠簸的主要原因,增加内存条可以直接提 高系统的可用内存,减少页交换操作。

apolloyhl的博客 1104

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

【C++篇 13】sizeof和strlen的区别、拷贝构造和赋值运算符、vector、 vector中的push_back()和emplace_back()的区别、以及使用场景、map

比如你只存 1 个元素,它可能直接分配 2 个、4 个甚至更多的空间(具体扩容策略由编译器决定,常见是 “翻倍”),这样下次新增元素时,只要没超过 capacity,就不用重新分配内存,能提升效率。普通 vector 如果没初始化元素(比如默认构造后 push_back 前),直接用 [] 访问(如 v[0] )是危险的(可能访问到无效内存)strlen是专门用来计算c风格字符串的有效长度(即字符串中字符的个数,不包含末尾的\0结束符),(指定或默认0,初始化capacity=size=a)

2401_85061293的博客 845

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

给大学应届毕业生就业的一些建议(计算机软件类)

给大学应届毕业生就业的一些建议(计算机软件类)  目前,大学应届毕业生的就业越来越麻烦,我作为一个应届毕业生,深有感受,所以,我就自己总结了一些在计算机软件类求职面试的时候,也许会问到或者考到的问题,也希望各位高手自己出来总结一下曾经在面试的时候遇到的一些比较经典的问题,希望,能够对以后面试的人一点帮助. 首先申明,本建议主要针对在计算机软件学得不是很扎实,但是又有兴趣往这方面发展的人,你可以看看

chiengod(钱神爷)的专栏 3599

百度LBS部门电话一面

 电话面试  结束后看了一下时间 将近40分钟 首先自我介绍 简单问了一下简历中的项目 后面就是如下问题 1.struct的大小 里面牵扯到win32下类型的大小以及内存对齐。 2.C中free和C++中delete的区别 ,free可以用来释放类吗? 首先free对应的是malloc;delete对应的是new;free用来释放malloc出来动态内存,dele

Do_Cool_Thing 787

C进阶-指针的进阶

这里p1和p2指向的是一个同一个常量字符串。C/C++会把常量字符串存储到单独的一个内存区域,当 几个指针。指向同一个字符串的时候,他们实际会指向同一块内存。但是用相同的常量字符串去初始化 不同的数组的时候就会开辟出不同的内存块。当一个函数的参数部分为一级指针的时候,函数能接收什么参数?当函数的参数为二级指针的时候,可以接收什么参数?9.函数指针:指向函数的指针,存放函数的地址。6.写一个函数,打印数组arr的内容。注:这个常量字符串是放在常量区的。1.指向函数指针数组的指针。

weixin_67916525的博客 193

笔记-指针的进阶

by: YUE

m0_62159976的博客 395

C/C++ 最常见50道面试题

C/C++经典面试题 面试题 1:变量的声明和定义有什么区别 为变量分配地址和存储空间的称为定义,不分配地址的称为声明。一个变量可以在多个地方声明, 但是只在一个地方定义。加入 extern 修饰的是变量的声明,说明此变量将在文件以外或在文件后面部分定义。说明:很多时候一个变量,只是声明不分配内存空间,直到具体使用时才初始化,分配内存空间, 如外部变量。 面试题 2:写出 bool 、int、 .........

快乐小半半的博客 23万+

C/C++开发工程师面试题目总结(自己面试经历+部分转载)

C/C++开发工程师面试题目总结1. C和C++的区别是什么?2. 关键字static、const、extern作用3. sizeof和strlen的区别4. 指针和引用的区别 原文:https://blog.youkuaiyun.com/u013457167/article/details/82814413 1. C和C++的区别是什么? C是面向过程的语言,C++是在C语言的基础上开发的一种面向对象编程...

sebastian_tan的博客 1万+

2018秋招C/C++面试题总结

博主从8月中旬开始大大小小面试了十几家公司,至今也许是告一段落吧,希望后面会有好结果,因此总结记录一些C/C++方向常见的问题。和大家一起学习! 参考了互联网的各种资源,自己尝试归类整理,谢谢~ 一、C和C++的区别是什么? C是面向过程的语言,C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛。 C中函数不能进行重载,C++函数可以重载 C++在C的基础上增添类,C是一个结构化语言...

我的梦 2万+

【C语言】指针篇- 深度解析Sizeof和Strlen:热门面试题探究(5/5)

本篇是关于Sizeof和Strlen常考面试题解析,也是指针篇的末尾 ,在此感谢大家的支持!

专注于 C/C++ 后端开发,涵盖基础语法、Linux系统与网络、MySQL数据库、常见算法及项目经验。 1700
上一篇: 数据结构及简单算法的总结----之【排序】
下一篇: 零零散散的笔试面试题目
eclipse_c
博客等级 码龄14年 28粉丝 162原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值