C语言常用基础知识总结
创始人
2024-04-10 19:29:04

1.sizeof

sizeof 返回参数所占用的字节数

int arr[10];
sizeof(arr)/sizeof(*arr)表示数组的大小。

数组名arr就是一个常量指针,指向第一个元素
*arr 指向第一个元素
sizeof(arr) 返回arr数组占用的总的字节数
sizeof(*arr)返回第一个元素所占用的字节数
总字节数/每个元素占用的字节数 = 元素个数

一般情况下sizeof是在编译的时候求值,所以sizeof(i++)并不会引起什么坏的后果。

根据上面的表述,那么定义一个int * p;sizeof(p)=?,实际是等于4,上面的arr难道不是一个指针吗?为什么大小是arr数组占用的总的字节数.

  sizeof(数组名):返回数组所有元素占有的内存空间字节数。

  sizeof(指针)  :返回计算机系统的地址字节数,如果是32位系统,返回4,16位系统返回2。

很多人认为数组名就是指向数组首地址的一个指针,但其实这个说法是错误的!

首先我们要知道,单纯的数组名,不是指针

数组名是一个标识符,它标识出我们之前申请的一连串内存空间,而且这个空间内的元素类型是相同的——即数组名代表的是一个内存块及这个内存块中的元素类型 。

只是在大多数情况下数组名会“退化”(C标准使用的decay和converted这两个词)为指向第一个元素的指针。

2.int *p=NULL 和int *p ;p=NULL 和*p = NULL 这三个的区别

第一种是定义一个int型指针,并给它初始化为NULL,也就是个空指针,没有指向任何地方,就是个空的。
第二种是定义一个int型指针,然后给指针赋值为NULL,指针指向NULL地址。
第三种是给指针的值赋值为NULL,也就是给指针指向的内容赋值为0(也就是为空)。

int* p=NULL,

定义一个指针,其指向的内存保存的是int型的数据,同时p的值为0X00000000(即完成一次初始化);

其中,p是一个指针变量,p中内存地址处的内存是p指向的内存。

3.sizeof(),length(),strlen()

strlen()函数:strlen()用来计算指定的字符串s 的长度,不包括结束字符"\0"。

strlen不计算 \0之后的数据。

相关内容

热门资讯

波兰容量市场中电池储能的经济性 2.5GW波兰最新容量竞价支持的新增额定电池容量(计划于2030年交付)每年14.7欧元/kW波兰2...
种田游戏哪些好玩 十大必玩种田... 想要体验宁静又治愈的种田乐趣?本文为你精选十大必玩种田游戏,涵盖模拟经营、田园生活等多类玩法,带你领...
两会结束,国务院立刻行动 全国两会刚刚落幕,3月13日,国务院常务会议便对深入贯彻党中央决策部署,落实政府工作报告安排,围绕全...
“天空地水工”立体监测  黄河... 来源:科技日报科技日报记者 付丽丽 3月的河套平原,春风中仍裹挟着料峭寒意。但随着气温的回升,沉寂一...
“十五五”规划纲要解读来了!未... 昨天(13日),“十五五”规划纲要正式发布,规划纲要的编制有何特点、亮点?对未来五年经济社会发展进行...