c语言笔记(翁凯男神
哼,要记得好好学习去泡帅哥吖
一、快速入门
%p
输出地址
#include <stdio.h>
void f(int *p);
int main(){
int i = 1;
printf("%p", &i);
f(&i);
return 0;
}
void f(int *p){
printf("\n%p", p);
}
%lu
long unsigned数据类型无符号长整数或无符号长浮点数
二、指针
运算符& vs *
& 取得变量的地址
*记录地址的变量
const & 指针
指针的运算
加减,比较
0地址
想要用到0地址时,可用null符号
何时用指针(指针功能
#include <stdio.h>
#include <stdlib.h>
int main(){//动态申请内存eg
int *a, n;
scanf("%d", &n);
a = (int*) malloc (n * sizeof(int));
for(int i = 0; i < n; i++){
a[i] = i + 1;
printf("%d ", a[i]);
}
free(a);//有借有还,计算机届道德典范
return 0;
}
free()
三、字符串
what :以0结尾的一串字符
字符串常量
指针 vs 数组
字符串的输入和输出
for 安全输出by指定长度
空字符串的正确定义
四、枚举
五、结构体
六、类型定义
七、联合union
八、本地变量 vs 全局变量
about全局变量
what
全局变量初始化
静态本地变量(挂着本地变量之名的全局变量
#include <stdio.h>
int a = 0;
int main(){
int a1 = 1;
static int a2 = 2;
// {
// int a = 2;
// printf("%s %d\n", __func__, a);
// }
// printf("%s %d\n", __func__, a);
printf("%p\n", &a);
printf("%p\n%p\n", &a1, &a2); //a和a2地址相近
return 0;
}
返回指针的函数
使用时注意
九、宏定义
有值的宏定义
无值的宏定义=》用来做条件编译
预定义的“维密天使”//带翅膀
带参数的宏定义
因为只是简单的文本替换,注意带括号
不要画蛇添足加分号,人家宏不是c
反例:
十、大程序
头文件中<> vs “”
易混区and解决
不对外公开的函数
声明和定义
十一、格式化输入和输出
scanf和printf的返回值
fopen
十二、二进制文件
二进制文件 vs 文本文件