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 文本文件

十三、移位



浙公网安备 33010602011771号