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

Sizeof不会返回C中变量的真实大小

Sizeof是C语言中的一个运算符,用于获取变量或数据类型的大小(以字节为单位)。它的语法形式为sizeof(expression),其中expression可以是变量、数据类型或表达式。

Sizeof运算符的返回值是一个无符号整数,表示所操作对象的大小。它在编译时求值,而不是在运行时。在C语言中,sizeof的结果是一个常量表达式,可以用于定义数组的大小、动态内存分配等场景。

需要注意的是,sizeof返回的大小是以字节为单位的,不同的数据类型在内存中占用的字节数是不同的。例如,sizeof(int)通常返回4,表示int类型占用4个字节。

在C语言中,sizeof可以用于获取各种数据类型的大小,包括基本数据类型(如int、float、char等)、数组、结构体、联合体等。它对于内存管理、数据类型转换、缓冲区分配等操作非常有用。

以下是一些常见数据类型的sizeof返回值:

  • sizeof(int):返回int类型的大小,通常为4字节。
  • sizeof(float):返回float类型的大小,通常为4字节。
  • sizeof(char):返回char类型的大小,通常为1字节。
  • sizeof(double):返回double类型的大小,通常为8字节。

对于复杂的数据类型,sizeof可以用于计算它们的总大小。例如,对于结构体struct,可以使用sizeof来获取其所有成员变量的总大小。

在云计算领域,sizeof的应用相对较少,主要用于C语言开发中的内存管理和数据类型操作。在云原生应用开发中,可以使用sizeof来计算数据结构的大小,以便进行内存分配和优化。

腾讯云提供了一系列云计算相关的产品和服务,包括云服务器、云数据库、云存储等。具体可以参考腾讯云官方网站(https://cloud.tencent.com/)获取更详细的产品信息和文档。

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

相关·内容

  • C++strlen()和sizeof()区别

    参考链接: C++ strlen() 一、sizeof  sizeof(...)是运算符,在头文件typedef为unsigned int,其值在编译时即计算好了,参数可以是数组、指针、类型、对象、函数等...它功能是:获得保证能容纳实现所建立最大对象字节大小。     由于在编译时计算,因此sizeof不能用来返回动态分配内存空间大小。...它功能是:返回字符串长度。该字符串可能是自己定义,也可能是内存随机,该函数实际完成功能是从代表该字符串第一个地址开始遍历,直到遇到结束符NULL。返回长度大小不包括NULL。...8.当适用了于一个结构类型时或变量sizeof 返回实际大小,  当适用一静态地空间数组, sizeof 归还全部数组尺寸。 ...])  都等价于 fun(char *)  在C++里参数传递数组永远都是传递指向数组首元素指针,编译器不知道数组大小  如果想在函数内知道数组大小, 需要这样做:  进入函数后用memcpy拷贝出来

    95020

    C++】C++ 引用详解 ④ ( 函数返回 静态变量 全局变量 引用 指针 )

    一、函数返回 静态变量 / 全局变量 引用 / 指针 1、函数返回局部变量引用或指针无意义 上一篇博客 【C++】C++ 引用详解 ③ ( 函数返回值不能是 “ 局部变量引用或指针 | 函数内...“ 局部变量引用或指针做函数返回值无意义 ) 得出如下结论 : 函数返回值 是 “ 局部变量 引用 或 指针 时 , 是无意义 ; 函数 执行完毕后 , 该 函数对应 栈内存 会被回收..., 相应 局部变量 地址 也有没有了意义 , 此时 , 再持有一个 函数返回 没有意义 引用 / 指针 , 取出值是随机无意义值 ; 2、函数返回静态变量/全局变量引用或指针 函数 返回是..., 该内存都不会被回收 , 返回它们 引用 / 指针 , 可以正常访问 对应 内存数据 ; 3、代码示例 - 函数返回静态变量/全局变量引用或指针 在下面的代码 , fun 函数作为 参照..., 返回普通 静态变量 ; fun2 函数 返回 静态变量 引用 ; 上述两个函数 静态变量 生命周期 都是 与 程序生命周期相同 , 只有程序结束时 , 这两个 静态变量内存才会被回收

    21130

    oc__weak修饰变量引用对象会不会放入autoreleasepool?

    众所周知 weak修饰符可以使修饰变量引用不改变原对象引用计数,而且在对象释放时可以对变量设为nil; 我一直认为引用对象也会放入自动释放池,因为我看书就是这样说: 图片 所以当有人问题...__weak修饰变量引用对象会不会放入autoreleasepool?...其实__weak修饰变量引用对象是不会放入autoreleasepool; 先看__autoreleasing修饰所引用对象 @autoreleasepool { __autoreleasing...nobjc:%@",objc); _objc_autoreleasePoolPrint(); } 此时对象放了释放池,但是由于arrayWithObject方法返回对象...会被添加到释放池,和有么有__weak修饰无关; 所以__weak修饰变量引用对象不会放入自动释放池

    1.1K30

    C 语言】C 项目开发代码规范 ( 形参合法性判断 | 函数返回值局部变量 | 函数不用全局变量 | 函数中使用局部变量接收形参 | 函数返回值 | 形参作返回值 | 形参返回值处理 )

    文章目录 一、C 项目开发代码规范 一、C 项目开发代码规范 ---- 上一篇博客 【C 语言】字符串模型 ( 键值对模型 ) , 完成了字符串 键值对 查找功能 , 代码不太规范 ; C 项目开发代码规范...: 函数 , 建议定义一个 局部 返回变量 , 该变量要经常使用 , 基本上每一步操作 , 都要有返回值 , 针对每个返回值都要有变量接收 ; // 各种函数执行返回值 int ret..., 尽量 不使用全局变量 , 一旦涉及到全局变量 , 该函数肯定是线程不安全 ; 参考 【C 语言】字符串模型 ( 字符串翻转模型 | 借助 递归函数操作 逆序字符串操作 | strncat 函数...) 博客 , 该博客中就使用了全局变量存放函数结果 , 不支持多线程访问 ; 函数中使用局部变量接收形参 : 函数形参指针变量 , 不要直接使用 , 如果涉及到修改指针指向操作 , 建议 创建 函数...形参返回值处理 : 返回值不要直接修改 , 先定义临时局部变量保存返回值 , 最后执行完毕 , 再将返回值 通过 间接赋值 赋值给 形参 返回值指针 指向 内存地址 ; // 保存非空字符串长度

    1.4K20

    C++变量声明与定义规则

    C++中有,我们后续在面向对象程序设计再探讨,这里只讨论静态局部/全局变量。...当一个源程序由多个源程序组成时,非静态全局变量在各个源文件中都是有效,而静态全局变量则限制了其作用域,即只在定义该变量源文件内有效,在同一源程序其他源文件不能使用它。...这种在文件中进行静态声明做法是从C语言继承而来,在C语言中声明为static全局变量在其所在文件外不可见。这种做法已经被C++标准取消了,现在替代做法是使用匿名命名空间。...C++98auto用法(C++11已废弃) C++98 auto用于声明变量为自动变量(拥有自动生命周期),C++11已经删除了该用法,取而代之是“变量自动类型推断方法”。...改变i值 constexpr C++11引入了常量表达式constexpr概念,指的是值不会改变并且在编译期间就能得到计算结果表达式。

    2.3K10

    C代码如何使用链接脚本定义变量

    C代码为什么要使用取址符号 & ?...原因: 一,在C代码,这样语句: int foo = 1000; 会导致2件事情发生: 在代码,留出4字节空间,保存数值1000 在C语言symbole talbe,即符号表,有一个名为foo...二,在链接脚本,假设 __bss_start = 1000 __bss_start并不是一个变量,它只是一个值,并不需要在内存留出一段空间来保存它; 在C语言中,符号表中会有一个名为__bss_start...所以:在C语言中,要去使用链接脚本定义值时,应该这样做: extern int __bss_start; int val = &__bss_start; 使用取址符号&去得到它在符号表值。...注意,这个值只是链接脚本定义值,并不表示某个变量地址。

    4K20

    Objective-C 变量作用域 原

    iOS,修饰变量关键字有四个,分别是:  1  @public  被这个关键字修饰变量是完全开放,只要有这类对象存在,就可以访问到这个变量。...2  @protected 被这个关键字修饰变量是受保护,只有在声明变量这个类中和它子类,可以访问。  ...3  @private 被这个关键字修饰变量是私有的,只能在声明这个变量类中使用,子类也不能使用。  ...4  @package 这个关键字比较难理解,大致意思是被修饰变量是封装,在本框架内可以自由使用,效果和@public 相同,而在框架外不能使用,其子类也不能使用,效果又相当于@private。...一点扩展: 访问类变量,我们可以用->符号,它和点语法区别在于,点语法实际上是调用set与get方法,而->符号是直接访问变量。 专注技术,热爱生活,交流技术,也做朋友。

    54720

    c-各变量在内存位置

    浏览量 2 关于变量分配相关知识,笔者之前也看过,但是最近遇到了一个相关题目,发现有些还是没有搞清楚,或者说是遗忘了一些,在此重新学习一下,顺便做一下相关笔记,以下一些知识是查看网络上面的一些文章总结而来...不了解小伙伴可以学习一下,了解小伙伴,欢迎发现错误并指正。...#include int a; // data段,bss储存区,未初始化变量,由系统初始化为0 static int b; // data段,bss储存区,由系统初始化为0 int...c[10] = { 1, 2, 3, 4, }; // data段,已初始化变量,具有rw(读写)属性 char *p = "china"; // p在data段已初始化变量区,具有rw(读写)属性...*)malloc(sizeof(char) * 10); // k在栈上 // malloc分配内存在堆上 return 0; }

    42810

    c++】探究C++list:精彩接口与仿真实现解密

    因为list底层结构为带头结点双向循环链表,因此在list中进行插入时是不会导致list迭代器失效,只有在删除时才会失效,并且失效只是指向被删除节点迭代器,其他迭代器不会受到影响 void...不会执行任何元素复制或者移动操作,只是在内部节点之间调整指针。...在C++,当一个类型(比如 ListIterator)是在另一个类型作用域内部定义(比如 list)时,这个类型被称为嵌套类型。...这里列表初始化允许直接用花括号 {} 来初始化对象。C++11 引入列表初始化特性可以用来初始化任何对象,包括具有构造函数对象。...这是因为在 C++ ,operator-> 有一个特殊规则 当重载 operator->,不会直接返回成员值,而是应该返回一个指针,这个指针指向对象包含我们想要访问成员。

    10310

    《看聊天记录都学不会C#?太菜了吧》(5)C# 可以用中文名变量

    太菜了吧》(6)多晦涩专业术语原来都会那么简单—— 布尔逻辑 《看聊天记录都学不会C#?太菜了吧》(5)C# 可以用中文名变量?—— 输入、运算 《看聊天记录都学不会C#?...太菜了吧》(4)C# 尚方宝剑 “先斩后奏”—— 变量运算 《看聊天记录都学不会C#?太菜了吧》(3)变量:我大哥呢?$:小弟我罩着你!—— 输出变量 《看聊天记录都学不会C#?...太菜了吧》(2)C#那么简单我为何之前还学C语言?——C#变量初解 《看聊天记录都学不会C#?...小C:其实命名规则非常简单,其一变量名不能够与 C# 关键字名称一致;其二变量名不能与 C# 标准函数名称一致;其三同一个变量名称只能创建一次、其四变量名是区分大小、其五不能够以数字开头;大概就那么多吧...小媛:唔,貌似基本上是一些不会乱犯错问题,不过说不准,说不定我就犯了,哈哈哈。 小C:那我给你看看,下面这个程序几个变量命名,有问题是哪个,你挑出来。

    39630

    Cacti 查询MySQL数据库占用磁盘大小返回php修改了

    cacti 查询MySQL数据库占用磁盘大小返回php修改了,但在cacti配置了模板,可以在device创建表格并且可以生成data source条目,但始终没有返回数据 不知道是什么问题...尝试过用script query 和script_server方式,由于还是不了解也不知道是对cacti了解不够还是什么原因 始终没有返回值 哪位大神给指点下 贴这里记录下,因为之前通过snmpwalk...方式进行制作模板已经成功,没办法用自定义mib方式进行实现吧,后面再分享 data query引用xml文件     get mysql databases...xml和php文件下载: 免费下载地址在 http://linux.linuxidc.com/ 用户名与密码都是www.linuxidc.com 具体下载目录在 /2014年资料/1月/2日/Cacti 查询...MySQL数据库占用磁盘大小返回php修改了 下载方法见 http://www.linuxidc.com/Linux/2013-07/87684.htm

    1.7K20

    C++】C++ 引用详解 ③ ( 函数返回值不能是 “ 局部变量引用或指针 | 函数内 “ 局部变量引用或指针做函数返回值无意义 )

    引用 和 指针 作为 传入 参数 ; 在 main 函数 , 调用 函数 , 创建一个 变量 , 将 变量 地址 / 引用 传入 函数 , 在函数通过 指针符号 或者 引用 , 直接修改传入实参..., 也就是 修改 地址 / 引用 指向 内存数据 , 该操作可以修改 外部 main 函数变量值 ; 如果 想要 在 函数 , 返回一个 地址 / 引用 作为返回值 , 这个 地址 /...如果 是 外部 main 函数 变量 地址 / 引用 , 那么 肯定是从 参数 传入 , 那么这个 地址 / 引用 就不需要返回 , 函数内部修改 , 直接体现在了外部变量 ; 因此...如果 想要 在 函数 , 返回 引用 / 指针 , 函数局部变量 引用 / 指针 是返回不出来 , 即使强行返回 引用 / 指针 , 也是当前 局部变量 被 分配 栈内存 地址 , 该函数 执行完毕后..., 定义了很多标准定义 using namespace std; // 导入 C 头文件 #include // 返回值是普通变量 int getNum() { int num

    40520

    C++变量自动初始化问题

    C++中有一些变量在如果没有赋初值会被编译器自动赋值为0,但有的变量不会这样,而得到一个随机数,下面具体讨论一下: 首先看一下C++几个存储区: 1、栈区:由编译器自动分配释放 ,存放函数参数值...其操作方式类似于数据结构栈。     2、堆区:一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构堆是两回事,分配方式倒是类似于链表,呵呵。    ...再来看一下定义和声明区别:从编译原理上来说,声明是仅仅告诉编译器,有个某类型变量会被使用,但是编译器并不会为它分配任何内存。而定义就是分配了内存。...结论:一些全局变量(不管用没用static修饰)或者是使用static修饰局部变量在定义时候都会被编译器自动初始化为0,而在声明时候任何变量不会被编译器自动初始化。...如static int num;如果放在函数任何位置都会被隐式初始化为0,但是如果是在类声明这样写就不会有值。

    1.4K70

    C++const成员变量和成员函数

    在类,如果你不希望某些数据被修改,可以使用const关键字加以限定。const 可以用来修饰成员变量和成员函数。...const成员变量 const 成员变量用法和普通 const 变量用法相似,只需要在声明时加上 const 关键字。...初始化 const 成员变量只有一种方法,就是通过构造函数初始化列表,这点在前面已经讲到了,请猛击《C++初始化列表》回顾。...const成员函数(常成员函数) const 成员函数可以使用类所有成员变量,但是不能修改它们值,这种措施主要还是为了保护数据而设置。const 成员函数也称为常成员函数。...最后再来区分一下 const 位置: 函数开头 const 用来修饰函数返回值,表示返回值是 const 类型,也就是不能被修改,例如const char * getname()。

    25030

    2018-7-18pythoh函数参数,返回值,变量,和递归

    ***************************************************************                                  函数参数初级和返回值...: 技术文档[]方括号里面的东西表示可选 参数:函数运行需要数据   如果没有参数会提示:missing 1 required positional, 函数两个要点,参数和返回值: 1.如果函数有参数在调用执行函数时候要把参数写里面...,需要用返回值时要定义一个变量接收返回值,如果不接收的话返回不会打印出来,如: def check():    print("表演人:")    name="songanhua "    return...name a=check()                #变量a用于接收函数返回值 print("检查到的人是%s"%a) 执行到return时函数就自动结束 *************...: variable  变量 函数变量分全局变量和局部变量,函数外为全局变量,函数内为局部变量 在函数如果需要修改全局变量值,需要先用global+name声明一下全局变量放在定义函数顶部

    2.1K40
    领券