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

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

相关内容

热门资讯

笔试强训48天——day29 文章目录一. 单选1. 某台微机安装的是 64 位操作系统,“ 64 位”指的是&#x...
PyTorch初学者指南:数据... PyTorch初学者指南:数据操作 文章目录PyTorch初学者指南:数...
基于Android的班级圈系统... 需求信息: 1.前台安卓app,后台web管理 2.用户由教师家长学生...
【MySQL Shell】9.... 配置实例后,通过完成以下步骤创建 InnoDB ReplicaSet: ...
【深度学习笔记】手动推导反向传... 问题 现在才意识到,卷积神经网络在不同的层上的反向传播的计算公式不一样,之前一直按照全连接层的那种简...
实战五十六:基于机器学习的上海... 本文主要分析影响房价的因素,数据来源为链家网,机器学习模型的使用中,采用了三种线性模型,一种非线性模...
如何修复u盘损坏的文件?   由于U盘经常会在各种不同的电脑上使用,这让它很容易出现一些问题,如u...
排序算法_ 一、选择排序题目arr[0~N-1]范围上,找到最小值所在的位置...
监控圈子行业黑话 文章目录监控圈子行业黑话监控监控系统监控指标全局唯一字符串作为指标标识标签集的组合作为指标标识优雅高...
C++高精度运算(加减乘除) C++中在int 是32位bit是2^32-1。 C/C++基础数字...