想写一篇博文的心愿酝酿很久了,一直不知道写点啥,这篇作为 a brand new start,重新看了C语言课件,有些许新的感受。在此感谢赵岩老师带我走进C的门槛,祝好~
【符号说明】:小结,待解决,重点
所以,float f=123456789.00+0.01=123456792.00000
2.判断两个浮点数相等
3.不被初始化的变量是随机数
4.缺省1.23小数为double,否则是1.23F
浮点型后缀f有时不能省略,下例子输出0.00000..否则默认为double型,输出末尾几位为随机数
5.C语言中用'\0'表示字符串结束
6.const修饰,程序中该常量无法再修改,否则
compile error.
7.&&和||运算只算一半的特点
8.++:前为先加,后进行其他的运算;否则后加先运算
9.函数是C中的功能单元
10.语句的分类(结合编译原理)
变量声明语句
表达式语句:任何一条计算的语句,如赋值(赋值表达式语句)
符合语句:多条表达式语句
控制语句:
函数调用语句:
11.空语句的作用:
延时用的空循环
12.输入输出函数:
(1)
字符+缓冲区留下回车:getchar VS putchar 从缓冲区读数据,非键盘。因此当缓冲区为空,界面停住。每次只读任意一个字符。
(2)
字符串+缓冲区读走回车:gets(char *str) VS puts
汉字占两个字节,占char两个字符,一个char为一个字节
(3)
scanf("%d",&a)把
空格回车等忽略留在缓冲区里面,
按格式如%d只提取数字,
若提取失败,则数据仍留在缓冲区。fflush(stdin)清空
用例1:3 f输出:333333333....死循环了(3一直留在缓冲区里面 因为没有提取不出来f,所以提取失败不能清除3)——用fflush可以解决此问题
用例2:3 4 5输出:#3#4#5(忽略了空格,每次缓冲区提取一个)
【小结scanf】:按格式读取,非格式部分留在缓冲区,此外空格回车等一直在缓冲区,它们属于%c,常常会忘记会被scanf("%c")读取以至于没有读我们想要的字符。
(4)格式输出
-m.n表示最少数据宽度+最多小数位数+左右对齐方式
13.何为语句块?
花括号!变量只在定义它的语句块中有效,向下有效。变量在语句块的开头定义,不是程序的开头!也就是说在IF中可以定义属于该语句块内部的一个新变量
输出:1,0VS1,1
你懂的,语句块中的是重新定义的,而且是语句块内的局部变量。
14.else与最近的if配套
15.随机函数的原理:
(1)伪随机数:每个数都对应同一个,每次随机结果相同
(2)time()返回当前时间作为随机种子
16.函数其实是一个
调用栈!
主函数依次调用函数进栈,执行完毕出栈
17.变量存储类型:一般的变量存在栈中,
static不是,因此不会随函数出栈而消失,而是等待程序结束
18.局部变量:函数内,
语句块内,形参——退出所在范围后无效
19.预编译指令:不进行语法检查,完全就是
替换(类似java的内联函数)!如define
20.多个C文件工作原理:
编译器:认识每个标示符(声明)
连接器:找到标示符的定义
21.sizeof:占字节数
22.冒泡排序降序——里层:从下向上每次将一个数往上面移动,移动到最上面的移不动了的时候,换比它更大的上移,
因此每次都能确定此轮最大的那个!
23.字符数组:
常量:
char str[5] = "China";错误,开的大小少了
24.fgets(char *s, int n, stdin)从标准输入中读取字符串保存在s中
25.指针
指针是一种变量,
依托于基本变量(注意的是int a=10; short *p1=&a;为编译错误!),都占用4个字节(是32位地址)
它的值就是存在它指向地址处数的值!
常见问题:空指针,指鹿为马(类型不匹配问题),指针越界(访问无地址分配的地方)
26. 动态一维数组:
int *p=NULL;
p=(int *)malloc(n*sizeof(int));
...
p[i]
...
free(p);
27.构建自己的数据类型+同一事物的信息内存分配不集中寻址效率低,因此结构体应运而生!
大小:
28.链表
struct node{
int data;
struct node *next;
}
增:
t=malloc(sizeof(struct Node));
t->next=x->next;
x->next=t;
x->next和x都是node类型的某一地址
删:
t=x->next;
x->next=t->next;
free(t);
29.共用体和结构体差别:成员占公共的内存,空间取决于所占空间最大的成员;互斥关系
30.文件:
File * fopen(const char *path, const char *mode)以某种方式打开文件,返回句柄,标识文件!