-
结构体初始化:struct weapon weapon_1={"weapon_name,100,200};
调用:printf("%s\n",weapon_1.name);
结构体数组:
struct weapon weapon_1[2]={
{"weapon_name1",50,100}, {"weapon_name2",100,200} };
调用:weapon_1[0].name; weapon_1[1].atk;
查看全部 -
结构体:与数组相反,存储的是一组不同类型的数据,如一把枪;
struct weapon{
char name[20];
int atk;
int price;
}; //这里只是定义,没有赋值,所以没有分配空间
声明:struct weapon(只定义一个变量时可以省略){ char name[20]; int atk; int price; }weapon_1; //这样就只有一个变量了 或者:struct weapon weapon_1;查看全部 -
typedef与#define易混淆
typedef有作用域;要用分号结束;遵循C语言语法规则;只是别名,预处理时不替换;
查看全部 -
宏还可以传递参数
#define N(n) n*10
main函数中:int b=N(5); 即是int b=5*10;
#define add(a,b) a+b main函数中:int x=add(20,30) //x=20+30=50 int x=add(20,30)*add(20,30) //x=20+30*20+30=650而非2500 也就是说,宏替换只是替换,并不能运算 所以最好加(),即#define add(a,b) (a+b)
宏的优势:可以不考虑参数类型:
int add(int a,int b){return a+b;} 对比:#define add(a,b) (a+b)
查看全部 -
1.reventon@reventon-virtual-machine:~$ vim helloworld.c
(新建helloworld.c源文件)
2.编码
3.编译: gcc helloworld.c(生成一可执行文件)
执行所生成的文件 ./a.out
会输出helloworld
编译的四个步骤:
.c文件 .i文件 .s文件 .o文件 (可执行文件)
预处理 编译 汇编 链接
gcc -o helloworld.i helloworld.c -E
(生成.i文件) ‖只让gcc进行预处理
回车,vi helloworld.i (看helloworld.i文件)
有大量代码,:$ (直接跳到代码底端)
底端是main函数,
上面的大量是#include <stadio.h>的展开
所以预处理的第一件事是展开头文件
第二件是宏替换
宏不考虑语法,随便替换
#define M int main(
M) //即int main(
查看全部 -
按位 & 运算的应用:
1,判断一个数的奇偶性, 和1做按位&运算,结果得0,为偶数,得1为奇数;
2, 进行字节的筛选,将要筛选的字节,和(11111)进行与运算;
3,快速清零
查看全部 -
静态链表结构图
查看全部 -
编译的四个步骤
查看全部 -
a | 0 也能判断奇偶
查看全部 -
& 清0,保留某些位,判断奇偶
查看全部 -
#define R 20 typedef int u32查看全部
-
宏定义,不考虑 数据类型,c语法查看全部
-
宏定义,不考虑c语法查看全部
-
C编译过程
查看全部 -
编译指令:预处理,宏定义
建立自己的数据类型:结构体,联合体,动态数据结构
逻辑运算符:&,|,~,^,<<,>>
递归函数的调用方法
查看全部
举报