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月18日,柬国务大臣兼国家打击网络诈骗委员会秘书长柴西...
(新春走基层)广东侨乡澄海“动... 2月20日,一场年味浓郁的“动物舞林大会”闹春巡演在广东省汕头市澄海区上演。布马舞、龙虾舞、双咬鹅舞...
阿根廷:允许选择“简化所得税申... (来源:吴说)吴说获悉,据阿根廷国家证券委员会(CNV)公告,CNV 批准第 1108 号一般决议,...
腾龙推出无线适配器,手机App...   炒股就看金麒麟分析师研报,权威,专业,及时,全面,助您挖掘潜力主题机会! (来源:IT之家)I...
年味渐浓时 暖意正升腾 转自:民政微语春节将至,家家户户备年货、盼团圆,街巷间红灯笼高挂,集市里烟火升腾,浓浓年味扑面而来。...