C语言笔记(一)

第一节 变量的属性
1、register只是请求寄存器变量,但不一定请求成功,且不能取该变量的地址值;
2、寄存器属于CPU,内存在CPU外,寄存器被访问的速度比内存被访问的速度快的多;
3、static修饰的局部变量存储在程序的静态区(从栈上移),全局变量也在;
4、extern变量在文件的其它地方分配空间,extern函数在文件的其它的地方定义;
5、extern可用于告诉编译器用C的方式进行编译,eg:
extern “C”
{
//content,C编译
}

第二节 分支语句
1、else不能独立存在且总是与它最近的if相匹配;
2、if语句中与零值比较注意的点:
i. bool类型变量应该直接出现于条件中,不要进行比较;
ii. 变量和0值进行比较时,0值应该出现在比较符号的左边
iii.float类型变量不能直接进行0值比较,需要定义精度:
eg: #define VAR 0.000001
float num = 3.14;
if语句:if((num > (-VAR)) && (num < VAR)) //若条件成立,则判断为0值
3、switch语句中的条件表达式可以是判断语句,可以在case中的语句中嵌套switch语句;
4、case语句中的值只能是整型或是字符型,case语句的排列顺序如下:
i. 按字母或数字顺序排列各条语句
ii. 正常情况放在前面,异常情况放在后面
iii.default语句只用于处理真正默认的情况
5、switch和if可以相互替换;

第三节 循环语句
1、do…while循环后需要分号,do…while用于防止内存泄露十分有效;
2、break和continue的区别
i. break表示终止循环的运行
ii. continue表示终止本次循环,进行下一次循环

第四节 void和goto分析
1、goto的使用率与程序质量成反比,改变程序的结构化特性,工程中禁用;
2、没有写函数返回类型默认为int,没有声明形参默认可以接受若干个形参,如若希望避免以上两种情况,可用void修饰返回值和形参;
3、不同C编译器对C标准的支持不同;
4、void指针的意义:
i. C规定只有相同类型的指针才可以相互赋值
ii. void指针作为左值是用于“接收”任意类型的指针
iii.void
指针作为右值使用时需要进行强制类型转化

第五节 struct和union分析
1、C语言中可以通过结构体产生柔性数组;
2、C语言中结构体的最后一个元素可以是大小未知的数组,eg:
struct softarray{
int len;
int array[];
};
struct softarray * soft = NULL;
soft = malloc(sizeof(struct sofyarray) + sizeof(int) * 5);
soft->len = 5;
int array[] 不占用空间
3、小端模式:低地址存放低位数据;
大端模式:低地址存放高位数据;
记忆方式:小端低低
4、struct中每个数据成员有独立的存储空间;
5、struct可以通过最后的数组标识符产生柔性数组;
6、union中所有的数据成员共享同一段存储空间;
7、union的使用会受到系统大小端的影响;

第六节 enum、sizeof、typedef分析
1、enum中定义的值是C语言中真正的常量,无名枚举常用于定义常量;
2、sizeof是编译器的内置标识符,不是函数,sizeof用于变量:sizeof(var)或 sizeof var;
3、typedef用于给一个已经存在的数据类型重命名,本质上不能产生新的类型;
4、typedef重命名的类型:
i. 可以在typedef语句之后定义
ii. 不能被unsigned和signed修饰
eg:
typedef struct student stu;
struct student{
int id;
char name[20];
};
5、sizeof不参与执行过程;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值