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之后的数据。

相关内容

热门资讯

中信重工申请矿样试验装置相关专... 4月18日消息,国家知识产权局信息显示,中信重工机械股份有限公司申请一项名为“一种定量微细粒矿样柔性...
刺破“开票经济”的数字泡沫 最新发票数据显示,截至3月25日,今年违规招商引资企业较为集中的废弃资源综合利用、再生物资回收等六类...
兰州:筑牢食品药品安全防线 食品药品安全事关百姓身体健康和生命安全。自全省“三抓三促”行动开展以来,兰州市市场监督管理局聚焦食品...
同济等3家公司共同取得爆管侦测... 4月18日消息,国家知识产权局信息显示,同济大学、宁波水表(集团)股份有限公司、浙江宁水水务科技有限...
【聚焦教育家精神巡回宣讲】聆听...   4月16日,贵州省2026年教育家精神巡回宣讲暨“讲述我的育人故事”贵安大学城专场活动在贵州财经...