C语言之补漏专题

本文主要探讨了C语言中的一些细节问题,包括sizeof在编译时的计算、单引号和双引号的区别、换行符的不同处理、键盘按键解析、continue的用法、man函数的形式、void类型的运用、NULL和相关零值的区分,以及C语言中的顺序结构、DEBUG与RELEASE版本的差异,还有带下划线的函数含义。通过这些内容,帮助开发者深入理解C语言的底层原理。
摘要由CSDN通过智能技术生成

sizeof的执行阶段

        sizeof 是编译时计算,不是执行过程中计算。

单引号与双引号

        单引号(‘’):被单引号的字符为一个变量,以ASCLL形式存储,占一个字节。

        双引号(“”):表示为字符串,char型,存储长度为字符串长度+1,编译器会在末尾加/0

\n \r 换行符

        windows下换行实际上是 \n \r

        linux下换行实际上是 \n

        两系统的换行上解析不同,所以文件在交互使用时有问题。要格外小心。

windows键盘按键解析

        ‘\b’-退格键

        ‘\r\n’-回车键

continue

        与break、return同类功能,比较如下:

        return:跳出当前函数;

        break:跳出循环,跳出for或者while;

        continue:结束本轮循环,接着执行下一次循环。

man函数的形式

        int main(int argc,char *argv[ ]);

        argc  输入参数个数

        *argv[ ]  输入参数,指针数组;

        注意:参数输入是字符串类型,需要使用strcmp比较

                输入多个参数时用空格间隔

                要使用argv,先检查argc

void类型

        void类型是不知道类型,强制转换后就有类型。

        例:int *p= (int *)malloc(4);

        void一般与指针配套使用;

NULL

        null不是c的关键字,是一个宏定义,原型如下:

#ifdef  _cplusplus
#define NULL  0    //c++语言的结果
#else
#define null (void *)0; //c的结果;定义一个指向0地址的不确定类型指针。
#endif

野指针

int *p;野指针。
int *p= NULL  即 int *p = (void *)0;//使指针指向虚拟0地址;

标准格式:

int *p = NULL;
p = xx;
if( NULL  !=  p) //为防止两个等号写漏1个,所以NULL一般写到前面;
{
*P= xxxxxxx       //解引用
}
p=NULL;

NULL、’\0’、 ‘0’、0区分

NULL是一个表达式,是将0地址强制类型转换成void,本质上是0地址,用来判断野指针;

‘\0’   是一个转移字符,对应的ASCII码0,本质是0;用来判断字符串结束;

‘0’    是字符0,对应的ascll码48,本质是48,用来写0字符;

0      是数字0,与ascll无关系,本质是数字0,用来比较变量是否等于0;

c的小动作

        强制转换:float a=12.34;int b=(int)a;//先将a的整数部分拷贝到临时内存,再将临时内存拷贝到b,再销毁临时空间。

float a;int b=10;a=b/3;  // B/3因为是int类型所以结果是3;再将3拷贝到float临时变量,再将临时变量的值拷贝到a后销毁临时变量。

顺序结构

        cpu就像是火车,代码就像是铁轨,如果火车没有铁轨,就跑飞了,所以上电期间cpu必须要有代码,哪怕是死循环。

DEBUG  & RELEASE版本

        debug版本的软件是包含了调试信息输出的版本。占用系统资源,拖慢运行速度。

release版本是去掉了调试信息,效率高于debug版本。

两者使用的是同一套源程序,要实现需要使用debug宏,示例如下:

#ifdef debug
    #define dbg()  printf()
#else
    #define dbug
#endif

函数带有下划线__

        函数名或变量前加“_”或“__”只有在大量使用函数库的时候才会出现,目的是防止与用户函数或变量名重名,_ 就是系统自己使用的函数,__是表示是内部使用的函数,以提醒用户不要去修改,要是___(3个下划线),不得了,看都不能看了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值