1.注意强制类型转换
2.静态变量static只进行一次初始化并存储在静态存储区且默认初始化为0
3.printf的返回值是输出的字符数量
scanf的返回值是成功输入的参数个数
4.++a为a+1之后的值,a–为a-1之前的值
5.逻辑运算符
a||b:a为真则不进行b
6.宏定义只是简单替换
7.malloc注意内存是否得到分配
8.数组a[]中
数组名a实际上是一个指针变量
&a得到该数组首元素地址
a+1得到第二个元素的地址
&a+1得到整个a数组之后的地址
二维数组b[][]中
&b+1得到整个b数组之后的地址
&b[0]+1得到第二行的首元素的地址
&b[0][0]+1得到第二个元素的地址
9.斐波那契
迭代
#include <stdio.h>
int main()
{
int n, t = 0;
int a = 1, b = 2;
scanf_s("%d", &n);
if (n == 1) t = a;
if (n == 2) t = b;
for (int i = 3; i <= n; i++)
{
t = a + b;
a = b;
b = t;
}
printf("%d", t);
return 0;
}
递归
#include<stdio.h>
int ff(int n)
{
if (n == 1) return 0;
if (n == 2) return 1;
if(n > 2) return ff(n - 1) + ff(n - 2);
}
int main()
{
int t, n;
scanf("%d", &n);
printf("%d", ff(n));
return 0;
}
10.字节序(大小端)
大端:数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中。
小端:与大端相反
11.sizeof/strlen都用来得到字符串长度
但sizeof不包括结尾/0
12.一个程序从源代码到可执行程序的过程包括预编译,编译,汇编,链接
预编译主要处理#开头的预编译指令
编译得到由汇编语言编写的目标代码
汇编得到机器可以执行的指令
链接是将有关的目标文件彼此相连接