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

相关内容

热门资讯

传习录丨铭记历史 吾辈自强! 转自:中国台湾网  “全体中华儿女冒着敌人的炮火共赴国难”。88年前“七七事变”爆发,拉开了中华民族...
王楚钦坦言奥运心理压力过大影响... #王楚钦称自己把奥运会想得过于困难#近日,王楚钦接受人民日报采访时谈到巴黎奥运止步32强,他表示自己...
硌牙鱼的读音对吗? 硌牙鱼的读音对吗?这个在各地叫法不一。在我们这叫嘎牙鱼。一种生活在淡水中的凶猛的小鱼呢。不对硌牙鱼g...
走访长城抗战中的古北口战场:帽... 战地寻踪今年是中国人民抗日战争暨世界反法西斯战争胜利80周年。中国人民抗日战争是近代以来中国人民反抗...
求古言,文笔好,微虐结局好的 求古言,文笔好,微虐结局好的妾本惊华,纨绔世子妃,帝凰之神医弃妃,盛世嫡妃,凤掩妆之戒毒皇后
CD Projekt宣布《赛博... 7月7日消息,近日,波兰电子游戏开发商CD Projekt发文表示,该公司正与日本扳机社Trigge...
尼山因何名扬世界 【#尼山因何名扬世界#】#尼山原来叫尼丘山#济宁曲阜市东南,有座小山,原名尼丘山,孔子父母“祷于尼丘...
体检出来写着肺纤维灶是什么情况 体检出来写着肺纤维灶是什么情况病情分析:你好肺纤维灶常可由于结核疾病经过治疗后或者没有治疗而痊愈留下...
新亚电缆涨2.06%,成交额3... 7月7日,新亚电缆盘中上涨2.06%,截至13:02,报21.29元/股,成交3312.91万元,换...
艾维眼科启动“红烛计划”,教师...      暑假的时光缓缓铺展,您终于可以暂时放下粉笔与教案,让疲惫的双眼稍作休憩。此刻,正是拥抱清晰...