被人误解的sizeof

sizeof错误的认识(sizeof是关键字为什么可以加括号) 下面仅为个人理解,编译器中验证外,没有任何理论依靠,若有错误请指出。            首先,sizeof是一个关键字并不是一个函数。或许你有疑问,既然是一个关键字,为什么出现sizeof的时候后面操作对象都加上括号哪?原因如下。 1. sizeof int ,结果为4,说明 sizeof说明他不是一个函数。 2.siezof(int )是关键字,为什么分开标记,比方 int i;i 阅读详情

前阵子正好看见过关于sizeof的几个问题,今天看到一篇总结的比较全的,遂留下


原文:http://blog.youkuaiyun.com/howard58888/article/details/9020031


1:sizeof是一个函数吗?

2:sizeof与strlen的区别?

3:sizeof(int)(*p)的值是多少?

4: 

int a[10];
sizeof(a);//是多少?
sizeof(a[10]);//是多少?
void f(int a[10])
{
	cout<<sizeof(a)<<endl;//值是多少?
}
解答:

1:对于第一个问题,sizeof 不是一个函数,而是一个语言内置的关键字,不信你试试sizeof 4与sizeof(int),打印结果均是4,如果是函数,肯定要加上括号,即然没加括号,那么sizeof是啥呢:),如果还不信,你可以找任何一本C++/C程序语言书查查,sizeof是32个关键字中的一个,如果没有,你就换本书吧:)

即然是关键字为什么又要加括号呢?你可以试一下sizeof int 与sizeof(int),第一个会编译通不过,而第二个确能编译通过,想想C/C++语言的规定,int前只能加signed.unsigned,auto,const,volative,用来修饰变量的存储方式,可没有提到前面可以加sizeof呦,如果前面加sizeof表示是什么存储方式呢:)

2:sizeof是关键字,strlen是一个标准C语言库函数,用来求取字符串的长度,char *str="abacd",sizeof str与strlen(str),编译一下,看看结果就知道了:),一个结果是4,一个结果是5,结果为4是因为一个指针占4字节,结果为5是因为串长abacd刚好5个字符,不作解释

3:sizeof(int)(*p)的值是多少?这个其借助1,已经分析的很详细了,其实就是取*p的值,对其转化成int类型的数据,再测量譔数据占的内存字节数,显然一个int型数据占4个字节

4:

int a[10];
sizeof(a)是多少?

测量结果是多少呢?这个结果是40,sizeof在此处测量的是一个数组的大小

int a[10];
sizeof(a[10])是多少?
细心的人会发现a[10]已经越界访问了,此处使用sizeof并不会报错,因为越界错误是运行时异常,编译器不作检查,此时a[10]编译器认为就是数组里的一个整形变量,结果当然也是4

void f(int a[10])
{
     cout<<sizeof(a)<<endl;//值是多少?
}
上面这个输出的值是多少呢?你可以写个程序试一下,结果是4,为什么呢,是因为C/C++语言规定函数无法以数组作为参数或者返回值,上面的函数在实际的编译过程中会被转化成

void f(int *a)
{
     cout<<sizeof(a)<<endl;//值是多少?
}
因为a是一个指向整形的指针,结果为4也是很显然的



Python、Selenium实现问卷星自动填写(内含适配个人问卷的方法) 使用Python、Selenium实现问卷星自动填写,内含适配个人问卷的方法。 阅读详情

相关推荐

手把手教你用STM32CubeMX配置WS2812的PWM+DMA驱动(附完整代码)

本文详细介绍了如何使用STM32CubeMX配置PWM+DMA驱动WS2812全彩灯带,包括硬件选型、STM32F103C8T6的时钟配置、定时器与PWM设置、DMA传输优化等关键步骤,并提供了完整的代码实现和常见问题解决方案,帮助开发者高效控制WS2812灯带。

weixin_30859423的博客 440

2021.10.14课堂笔记

一、整数除整数始终等于整数 例如3/2等于1会把结果当整形 3.0/2等于1.5 所以不能两边都是整数 二、 (*单目操作符*) 操作符是可以不加括号的,但用sizeof时最好要加 sizeof(a〔10〕)=40 22 !逻辑反操作符 C语言真代表1假代表0,在式子前加!逻辑反操作符,结果就会相反,例!3<5等于1 -负数操作符+正数操作符 &取地址操作符 sizeof()算字节数用,操作数的类型长度操作符 ~对一个数的二进制按位取反(所有位变相反) 如inta...

qq_62355066的博客 239

Kaggle | 总奖池超200万美金的数学竞赛AIMO2冠军方案

••••结论1:通过结合高质量大规模数据集、工具集成推理和生成式选择方法,可以构建在挑战性数学问题上达到最先进水平的语言模型。本文的方法在 AIMO-2 竞赛中的胜利以及在多个数学基准上的 SOTA 结果验证了这一策略的有效性。结论2:发布 OpenMathReasoning 数据集、OpenMath-Nemotron 模型和代码是社区的宝贵财富。

hxshine的博客 1196

sizeof 用法总结

sizeof()功能:计算数据空间的字节数1.与strlen()比较      strlen()计算字符数组的字符数,以"/0"为结束判断。      而sizeof计算数据(包括数组、变量、类型、结构体等)所占内存空间,用字节数表示2.指针与静态数组的sizeof操作      指针均可看为变量类型的一种。所有指针变量的sizeof 操作结果均为4。      注意:int *p; sizeof

天下无双 1277

Win11/Win10系统下,Proe5.0 M280终极版保姆级安装与激活指南(含SSQ补丁避坑)

本文提供Win11/Win10系统下Pro/E 5.0 M280终极版的详细安装与激活指南,涵盖环境配置、SSQ补丁应用及常见问题解决方案。通过系统调整、分步安装和性能优化,确保软件在现代操作系统上的稳定运行,特别适合机械设计用户参考。

weixin_30895059的博客 444

Python速成指南:进阶篇

欢迎来到Python速成指南的进阶篇。如果你已经完成了基础篇的学习(Python速成指南:从零开始的编程之旅-优快云博客),并且对Python的基本概念有了扎实的理解,那么你已经为进入更深层次的Python世界做好了准备。在这个进阶篇中,我们将深入探讨Python的高级特性,并着重于如何在实际工作中应用这些知识。深入理解Python的高级特性掌握在实际项目中常用的技巧和最佳实践提高代码质量和性能了解Python在各个领域的专业应用让我们开始这段激动人心的Python进阶之旅吧!

weixin_44067082的博客 2337

C/C++中sizeof()的用法——32位和64位下的sizeof()

机器平台:X86_64 处理器 操作系统:Red Hat 4.1.2-14 编译器: gcc version 4.1.2 20070626Size of char is: 1 Size of unsigned char is: 1 Size of signed char is:

chang___hong的专栏 2088

Cesium创建无人机视锥,同步视锥与鹰眼地图视角,实现视锥键盘控制。解决视锥初始化位置不准确问题等

本文描述了一个基于Cesium的3D视锥体可视化系统开发过程。系统实现了主视图与鹰眼视图的双屏联动,支持通过键盘控制视锥体的空间移动(WASD前后左右,Q/E旋转,C/Z升降),并实时同步更新两个视图。关键技术包括:1)基于主视图Scene创建Camera实现视锥体精确绘制;2)通过PerspectiveFrustum设置视锥参数;3)建立双视图的相机位置及视角同步机制。目前暂未实现视锥体far/near边界在鹰眼视图中的可视化,该系统可应用于无人机视角监控等三维场景交互需求。

coder_bin的博客 1590

sizeof和strlen的区别

对于数组 char a[10]="12345"; sizeof(a) 为10,其在编译阶段就已经计算出来了 strlen(a) 为 5,是实际字符串的长度,不包含'\0' 对于指针 char *s="asdfqwer";    sizeof(s)为4,是一个指针的大小(有个疑问,为什么这时不是字符串的长度?*s按理说不也是一个数组的头指针吗) sizeof(*s)为1,是一个char...

https://github.com/heatMa 520

从零到一:龙芯杯参赛全攻略(含北理工学长经验PDF、B站培训视频与开源代码合集)

本文详细介绍了龙芯杯全国大学生计算机系统能力大赛的参赛全攻略,包括资源整合、技能树构建、团队协作和避坑指南。提供北理工学长经验PDF、B站培训视频与开源代码合集,帮助参赛者从零基础到站上领奖台。重点解析如何高效获取优质资源、避开新手常见陷阱及构建可落地的学习路径,助力普通学生系统学习CPU设计。

weixin_26802933的博客 542

✨在Windows11上安装虚拟机(VMware17.6.0)保姆级教程(附安装包)

VMware Workstation Pro 是一款功能强大的虚拟机软件,它允许你在单一的物理机上运行多个操作系统。性能卓越:VMware以其出色的性能和稳定性而闻名,适合运行资源密集型的虚拟机。用户友好:直观的用户界面使得即使是初学者也能快速上手。功能全面:支持多种操作系统,包括Windows、Linux、macOS等,满足不同用户的需求。企业级支持:VMware提供全面的技术支持,适合企业级用户。恭喜你成功安装了VMware Workstation Pro 17.6.0!

Python老吕的博客 1万+

理解C语言中的sizeof操作符

sizeof不是函数,就是一个一元运算符,只不过用起来象个函数而已对于数据类型,sizeof会计算出该数据类型的大小,比如sizeof(int)就是4但是如果是指针的话比如char* a[16]; sizeof(a)的值就是16char** a[16]; sizeof(a)的值就是64以前我一直以为 sizeof(a)因该是4,因为a其实就是一个指针,在32位操作系统中,一个指针(内存地址)长度就是32bit即4字节但是事实证明他会计算出这个指针所指向的内存空间的大小,而不是指针类型的大小 下面再来看这个

ma_de_hao_mei_le的博客 3358

【100%通过率】2023华为od机试C卷【电脑病毒感染】C语言 实现

一个局域网内有很多台电脑,分别标注为 0 ~ N-1 的数字。相连接的电脑距离不一样,所以感染时间不一样,感染时间用t 表示。其中网络内一台电脑被病毒感染,求其感染网络内所有的电脑最少需要多长时间。如果最后有电脑不会感染,则返回-1.

MISAYAONE的博客 1042

printf sizeof c语言,你可能对 sizeof(i++) 有点误解。。。

原标题:你可能对 sizeof(i++) 有点误解。。。各位,今天还是按照惯例给大家分享一个C语言容易出现的小错误,这也是跟sizeof有关的,问题虽小,却可管中窥豹,话不多说,代码先行:# includeintmain{inti;i = 8;printf( "%dn",i);printf( "%dn", sizeof(i++));printf( "%dn",i);return0;}问输出的值是什...

weixin_36219842的博客 904

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

sizeof的一些误解

首先的一个误解是以为sizeof是一个函数,因为我们常常看到sizeof()这样的用法,但是sizeof是一个操作符,一个一元操作符!!!int i=0;printf("%d/n",sizeof (int) );上述代码显示sizeof i,sizeof(i),sizeof(int)都正确,但是sizeof int不对,当计算的是类型的大小时,必须用()int array[10]={0};void

lyaqys的专栏 527

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

【C语言】你可能对 sizeof() 有点误解。。。

各位,今天还是按照惯例给大家分享一个C语言容易出现的小错误,这也是跟sizeof有关的,问题虽小,却可管中窥豹,话不多说,代码先行:#include intmain() { i...

轻松学C语言 366

C++中sizeof操作符和strlen函数区别

在C++编程语言中,sizeof和strlen是两个常用的操作符和函数,它们都与字符串和内存有关,但它们的用途和返回值是不同的。

2301_80872221的博客 924

Go语言之unsafe.sizeof()

初遇unsafe.Sizeof()时,以为Go语言中的sizeof和C语言的sizeof不太一样,对于算出的值也是一脸懵逼。深入了解才发现两者并没有区别,是自己误解了。 package main import ( "fmt" "unsafe" ) func main(){ var test string = "abc" a := len(test) b := unsafe.Sizeof(test) fmt.Println(a,b) } 最终的运算结果是:3,16 对于接触过python的同学来说,3

buptwcx的专栏 8478

【C语言关键字】sizeof -- 被误解为函数的关键字

我的不幸,恰恰在于我缺乏拒绝的能力。我害怕一旦拒绝别人,便会在彼此心里留下永远无法愈合的裂痕。 – 太宰治 《人间失格》 说明 sizeof,英文应该是 “size of”,也就是 某某的大小 的意思。 这个关键字的作用是计算变量的所占字节的大小,当然也可以计算变量类型的大小。 注意事项 括号不是非必须,比如计算变量的时候,可以使用 sizeof(变量名) 或者 sizeof 变量名,但是如果是计算变量类型的画话,就必须加括号,sizeof int 是不被允许的,因为容易让编译器误认为 sizeof .

Eureka1024的博客 5827

sizeof详解

<br />C语言中,令无数人纠结的问题之一:sizeof 和 strlen 的区别和联系,现解析如下<br /><br />c语言中判断数据类型长度符<br />  用法 <br />  sizeof(类型说明符,数组名或表达式); <br />  或 <br />  sizeof 变量名 <br />  1. 定义: <br />  sizeof是C/C++中的一个操作符(operator),简单的说其作用就是返回一个对象或者类型所占的内存字节数。 <br />  MSDN上的解释为: <br />  

星愿心愿的专栏 538

c++ sizeof()

1、什么是sizeof    首先看一下sizeof在msdn上的定义:     The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type (including aggregate types). This keyword returns a value o...

华丽的贵族 358

C语言中的sizeof

一: sizeof是编译器的内置指示符(不是函数) sizeof用于计算类型或变量所占的内存大小 sizeof的值在编译期就已经确定 sizeof用于类型: sizeof(type) sizeof用于变量:sizeof(var) 或 sizeof var ———————————— int var = 0; printf("%d\n", sizeof(int)); printf(...

m0_37633929的博客 307

C语言中sizeof的使用方法及深入解析

在C语言中,sizeof是一个非常重要的操作符,用于获取变量或数据类型在内存中占据的字节大小。了解sizeof的用法及其计算原理,对于编写高效的C程序至关重要。本文将通过具体的代码示例,深入解析sizeof的使用方法及注意事项,帮助读者更好地掌握这一知识点。

weixin_44205236的博客 4429

C++ sizeof重读

sizeof如果要系统的说会包含很多的知识点。 1. 基本类型的size 2. 类的size,子类的size 3.数组的sizeof,引用的sizeof,还void不能用sizeof 这个笔记就当是自己一点一点的记录吧!

笨老男孩 590

sizeof使用误区

    sizeof的作用,可用来求数据类型的大小,包括内置类型和自定义类型等,如下所示: typedef struct node { int val; int lnode; int rnode; int parent; }NODE; char a[10]; printf("%d %d %d\n", sizeof(int), sizeof(a), s...

Black.Spider的博客 210

学习C ,常见的误解

学习C 你是否会有以下几点误解?1. “要理解C ,你必须先学习C”2. “C 是一门面向对象的语言”3. “为了软件可靠性,你需要垃圾回收”4. “为了效率,你必须编写底层代...

轻松学C语言 184

linux sizeof 详解

很多人认为sizeof 是一个函数,其实他并不是一个函数,他只是一个操作符(有人认为它是一个宏定义). 这个操作的返回值是size_t  类型, 一般size_t 定义为 typedef unsigned int size_t, sizeof 的操作数可以是object 也可以是 type name

sdc20102010的博客 1387
上一篇: Lua查找表元素过程(元表、__index方法是如何工作的)
下一篇: linux共享内存
寰子
博客等级 码龄15年 91粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值