求某类型变量的大小(是否使用sizeof)
sizeof与strlen
strlen("\0") =? sizeof("\0")=?
strlen("\0") =0,sizeof("\0")=2。
strlen用来计算字符串的长度(在C/C++中,字符串是以"\0"作为结束符的),它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描直到碰到第一个字符串结束符\0为止,然后返回计数器值sizeof是C语言的关键字,它以字节的形式给出了其操作数的存储大小,操作数可以是一个表达式或括在括号内的类型名,操作数的存储大小由操作数的类型决定。
sizeof和strlen有什么区别?
strlen与 sizeof的差别表现在以下5个方面。
sizeof是运算符(是不是被弄糊涂了?事实上, sizeof既是关键字,也是运算符,但不是函数),而strlen是函数。 sizeof后如果是类型,则必须加括弧,如果是变量名,则可以不加括弧。
sizeof运算符的结果类型是 size_t,它在头文件中 typedef为 unsigned int类型。该类型保证能够容纳实现所建立的最大对象的字节大小
sizeof可以用类型作为参数, strlen只能用char*作参数,而且必须是以“0结尾的。 sizeof还可以以函数作为参数,如int g(),则 sizeof(g())的值等于 sizeof( int的值,在32位计算机下,该值为4。
大部分编译程序的 sizeof都是在编译的时候计算的,所以可以通过 sizeof(x)来定义数组维数。而 strlen则是在运行期计算的,用来计算字符串的实际长度,不是类型占内存的大小。例如, char str[20] = "0123456789”,字符数组str是编译期大小已经固定的数组,在32位机器下,为 sizeof(char)20=20,而其 strlen大小则是在*运行期**确定的,所以其值为字符串的实际长度10。
当数组作为参数传给函数时,传递的是指针,而不是数组,即传递的是数组的首地址。
作者:嵌入式与Linux那些事
链接:https://www.nowcoder.com/discuss/641248?source_id=profile_create_nctrack&channel=-1
来源:牛客网
不使用 sizeof,如何求int占用的字节数?
#include <stdio.h>
#define MySizeof(value) (char *)(&value+1)-(char*)&value
int main()
{int i;double f;double *q;printf("%d\r\n", MySizeof(i));printf("%d\r\n", MySizeof(f));printf("%d\r\n", MySizeof(q));return 0;
}
求某类型变量的大小(是否使用sizeof)相关推荐
- sizeof()来求一个类的大小
基本概念 一个类的实例化对象所占空间的大小? 注意不要说类的大小,是类的对象的大小. 首先,类的大小是什么?确切的说,类只是一个类型定义,它是没有大小可言的. 用sizeof运算符对一个类型名操作,得 ...
- 左神算法:求最大子矩阵的大小(Java版)
本题来自左神<程序员面试代码指南>"求最大子矩阵的大小"题目. 题目 给定一个整型矩阵 map,其中的值只有0和1两种,求其中全是1的所有矩形区域中,最大的矩形区域为1 ...
- C语言sizeof求结构体的大小
运算符sizeof可以计算出给定类型的大小,对于32位系统来说,sizeof(char) = 1; sizeof(int) = 4.基本数据类型的大小很好计算,我们来看一下如何计算构造数据类型的大小. ...
- linux下c 指针变量大小,C语言sizeof关键字
常年被人误认为函数. sizeof 是关键字不是函数,其实就算不知道它是否为32 个关键字之一时,我们也可以借助编译器确定它的身份.看下面的例子: int i=0: A),sizeof(int): B ...
- 栈与队列8——求最大子矩阵的大小
题目 给定一个整形矩阵map,其中的值只有0和1,求其中全是1的所有矩形区域中,最大的矩形区域中1的数量,例如:1 1 1 0,其中最大的矩形区域有3个1,返回3. 再如: 1 0 1 1 1 1 1 ...
- 矩阵的逆矩阵怎么求_字节面试原题:求最大子矩阵的大小
题目 给定一个整型矩阵 map,其中的值只有 0 和 1 两种,求其中全是 1 的所有矩形区域中,最大的矩形区域为 1 的数量. 例如: 1 1 1 0 其中,最大的矩形区域有 3 个 1,所以返回 ...
- 简述C语言中32个关键字
在C语言中,一共有32个关键字,这些关键字我们可以将其非为两类:分别是数据类型关键字和流程控制类关键字.其中数据类关键字又可以分为A基本数据类型(5个).B类型修饰关键字(4个).C复杂类型关键字(5 ...
- 数组的操作-集大成篇
目录 1.数组元素的查找 2.数组元素的插入 ① 伪代码 ② 代码 3.数组元素的删除 ① 伪代码 ② 代码 4.数组元素的检索 5.数组元素的遍历 (1) 小试牛刀:打印数组中每个元素 ① ...
- c语言获取结构体大小sizeof,C语言sizeof求结构体数组长度
C语言sizeof求结构体数组长度 C语言sizeof求结构体数组长度 #include typedef struct ss{ char a;//偏移量为0,大小为1,0能被1整除,=1 short ...
最新文章
- Python使用matplotlib函数subplot可视化多个不同颜色的折线图、在折线图上为每个数据点添加数值标签
- U-Mail邮件网关测试勒索病毒样例图
- 凸透镜成像实验软件_论文丨几何光学实验在初中物理教学中的应用
- linux学习笔记-10.解压与压缩
- 在子线程中使用runloop,正确操作NSTimer计时的注意点 三种可选方法
- mysql 执行计划 代价_mysql explain执行计划详解
- c语言char类型溢出,C语言中数据溢出的问题---以char类型为例
- python3 shutil模块
- 红队技巧:绕过ESET_NOD32抓取密码(ESET_NOD32是一款杀毒软件)
- dedeCMS 会员中心注册登陆页面 - 模板修改
- 不同网段的局域网怎么互通_智能化工程中,局域网IP地址不够用怎么解决?
- FP Growth算法
- WinForm 窗体基本属性、公共控件
- yii2 错误处理
- “只要就“其实是废话,没有任何用处
- java读取配置文件路径问题
- 数据库“新增字段、删除字段、修改字段“
- STM32硬件编程_学习思路
- 如何防范动态调试(Anti-Debug)(SoftICE篇)
- 走进小作坊(二十)----商道:胡雪岩叱咤商场的经营智慧