`
ljmdbc7a
  • 浏览: 51843 次
  • 性别: Icon_minigender_1
  • 来自: 沈阳
社区版块
存档分类
最新评论

深入sizeof的用法

阅读更多

 

今天腾讯笔试考到sizeof的用法,当时有点懵,现在整理一下:

 

sizeof是一个操作符,功能是计算数据空间的字节数,

包括数组、变量、类型、结构体等所占内存空间,并用字节数表示。

 

下面来看一个测试就明白了:

 

 

#include <stdio.h>

void fn(char aa[100])
{
	printf("%d\n\n",sizeof(aa));
	//数组做参数时,数组名称同指针///因为内存实际上没有为形参数组开辟空间,也就是说100没有实际意义
}

int main()
{
	char a[] = "0123456789";
	printf("%d\n\n",sizeof(a));//计算字符数组的字符数,以"\0"为结束判断,输出为11
	
	char *b = a;
	printf("%d\n\n",sizeof(b));//指针变量的sizeof结果均为4

	char c[100];//对于静态数组,sizeof直接计算数组大小
	printf("%d\n\n",sizeof(c));
	
	fn(a);
	return 0;
}

 

 自己可以做一下测试,输出结果看图:


 

  • 大小: 16.7 KB
2
1
分享到:
评论

相关推荐

    深入sizeof的使用详解

    经常在C下编程,不了解精通sizeof就有点说不过去了,本文可... 二、sizeof的使用方法1、用于数据类型 sizeof使用形式:sizeof(type) 数据类型必须用括号括住。如sizeof(int),还有sizeof int ,或sizeof(variabl

    深入详解sizeof

    本篇文章细心总结了sizeof的各种用法,讲述了来龙去脉,值得细心研读。

    C学习深入学习总结

    2.6 你是否知道auto、extern、register、volatile、restrict、inline的用法? 6 3 const 6 3.1 你是否经常使用const来表明不能够被更改的变量? 6 3.2 你是否经常使用const常量来代替宏? 6 3.3 下面四种情况,你...

    深入理解双指针的两种用法

    好久没有用过C/C++的二级指针了,总觉的它就是指针的指针...void GetMemory(char *p, int num){ p = (char *)malloc(sizeof(char) * num); //p = new char[num]; //C++当中}int _tmain(int argc, _TCHAR* argv[]){ 

    程序员必备知识点整理包括编程、面试、刷题等

    1.5 栈1.6 数组下标问题解决方法1.7动态数组1.8 VS快捷键1.9 阻塞、非阻塞、同步、异步1.10 锁1.11 C++1)拷贝构造函数2)数据抽象、数据封装、接口(抽象类)3)OOP 4)基础5)练习题6)常量指针,和指针常量的区别7...

    实验报告5.doc

    实验报告5 "题目"数据类型 " "目的" " "要求"深入理解C语言中数据类型的意义。 " " " " " "测试不同类型数值数据的存储空间大小、取值范围i、有效数字位数和精度。 " " "编写一个测试基本数据类型所占内存宽度的程序...

    深入理解golang的基本类型排序与slice排序

    前言 其实golang的排序思路和C和C++有些差别。 C默认是对数组进行排序, C++是对一个序列进行排序, Go则更宽泛一些,待排序的可以是任何对象, 虽然很多情况下是... c 的 qsort 的用法: qsort(data, n, sizeof(int),

    C语言进阶-牟海军.pdf

    本书是一本修炼C程序设计能力的进阶之作,它没有系统地去讲解C语言的语法和编程方法,而是只对C语言中不容易被初学者理解的重点、难点和疑点进行了细致而深入的解读,揭露了C语言中那些鲜为普通开发者所知的秘密,...

    C语言进阶 作者 Wrestle.Wu

    本书是一本修炼C程序设计能力的进阶之作,它没有系统地去讲解C语言的语法和编程方法,而是只对C语言中不容易被初学者理解的重点、难点和疑点进行了细致而深入的解读,揭露了C语言中那些鲜为普通开发者所知的秘密,...

    windows编程资料大全

    这里也可算是对shotgun的文章的补充与深入介绍吧,好了,闲话少说。 在WinNT下"真正隐藏进程"这一说法,可以讲是根本不可能实现,只要我们的程序是以进程内核的形式运行,都是不可能逃离CTRL+ALT+DEL的法眼。那么...

    编程思想下篇

    3.16 Java没有“sizeof” 3.17 操作符小结 3.18 总结 第4章 控制执行流程 4.1 true和false 4.2 if-else 4.3 迭代 4.3.1 do-while 4.3.2 for 4.3.3 逗号操作符 4.4 Foreach语法 4.5 return 4.6 break和 continue 4.7 ...

    C语言解析教程(原书第4版)(美) 凯利.pdf

    《c语言教程(原书第4版)》是一本优秀的c程序设计语言教材,完整描述了ansi c语言及其语法特性,并对c语言的高级特性和应用作了深入阐述,介绍了从c到c++和java过渡的相关知识。《c语言教程(原书第4版)》的一个...

    操作系统(内存管理)

    文将对 Linux™ 程序员可以使用的内存管理技术进行概述,虽然关注的重点是 C 语言,但同样也适用于其他语言。文中将为您提供如何管理内存的细节,然后将进一步展示如何手工管理内存,如何使用引用计数或者内存池来半...

    Thinking in java4(中文高清版)-java的'圣经'

    + 和 += 3.14 使用操作符时常犯的错误 3.15 类型转换操作符 3.15.1 截尾和舍入 3.15.2提升 3.16 Java没有“sizeof” 3.17 操作符小结 3.18 总结 第4章 控制执行流程 4.1 true和false 4.2 if-else 4.3 迭代 4.3.1 do-...

    内存管理内存管理内存管理

    文中将为您提供如何管理内存的细节,然后将进一步展示如何手工管理内存,如何使用引用计数或者内存池来半手工地管理内存,以及如何使用垃圾收集自动管理内存。 为什么必须管理内存 内存管理是计算机编程最为基本的...

    PHP和MySQL WEB开发(第4版)

    6.10.7 使用__autoload()方法 6.10.8 实现迭代器和迭代 6.10.9 将类转换成字符串 6.10.10 使用Reflection(反射)API 6.11 下一章 第7章 错误和 异常处理 7.1 异常处理的概念 7.2 Exception类 7.3 用户自定义异常 ...

    PHP和MySQL Web开发第4版pdf以及源码

    6.10.7 使用__autoload()方法 6.10.8 实现迭代器和迭代 6.10.9 将类转换成字符串 6.10.10 使用Reflection(反射)API 6.11 下一章 第7章 错误和 异常处理 7.1 异常处理的概念 7.2 Exception类 7.3 用户...

    PHP和MySQL Web开发第4版

    6.10.7 使用__autoload()方法 6.10.8 实现迭代器和迭代 6.10.9 将类转换成字符串 6.10.10 使用Reflection(反射)API 6.11 下一章 第7章 错误和 异常处理 7.1 异常处理的概念 7.2 Exception类 7.3 用户...

    你必须知道的495个C语言问题.pdf

    2.22 有没有一种自动方法来跟踪联合的哪个域在使用? 枚举 2.23 枚举和一组预处理的#define有什么不同? 2.24 枚举可移植吗? 2.25 有什么显示枚举值符号的容易方法吗? 位域 2.26 一些结构声明中的这些冒号和数字是...

    C++ Primer中文版(第5版)李普曼 等著 pdf 1/3

    Lippman丰富的实践经验和C++标准委员会原负责人Josée Lajoie对C++标准深入理解的完美结合,已经帮助全球无数程序员学会了C++。 对C++基本概念和技术全面而且权威的阐述,对现代C++编程风格的强调,使本书成为C++...

Global site tag (gtag.js) - Google Analytics