这是一条从中午开始编辑的博文:突然想写,是因为灵感突袭:自己通过对比这两天学的动态库与静态库的创建以及今天Makefile的运用,总结出了至关重要的一点,无论哪种方式,最为关键的一步都是生成.o文件(即目标文件):运用动态库与静态库时,则还需要调用库函数,而运用Makefile则完全不需要。
今天真的学的有点精疲力尽了、一下子给我灌输如此之多的知识、通并快乐着:
一、如何使用Makefile:
1、首先创建源文件:main.c add.c sub.c
2、创建Makefile或者makefile(vim Makefile),最好使用Makefile;Makefile里面是一些编译规则,告诉编译器如何编译源文件
3、Makefile书写规则:
目标:依赖文件
命令
解释:通过对“依赖文件”执行“命令”来生成“目标文件”
main :main.c add.c sub.c
gcc main.c add.c sub.c -o main
eg:
main:main.c add.c sub.c
gcc mian.c add.c sub.c -o main
clean:
rm -f *.o main //只是告诉你接下来要执行的是一个命令而已;不需要依赖文件,可以把clean的名字换成其它的
可拆解为:
main:main.o add.o sub.o -o main
gcc main.o add.o sub.o -o main
mian.o:main.c
gcc main.c
add.o:add.c
gcc add.c
sub.o:sub.c
gcc sub.c
#定义变量
cc = gcc
TARGET = main
OBJ = mian.o add.o sub.o
$(TARGET):$(OBJ)
$(cc)$(OBJ) -o $(TARGET)
$(OBJ):%.o:%.c
$(cc) -c $<
引用变量:
$(变量的名字)
二、数组
什么是数组?为什么需要数组?有了数组之后有什么好处?没有数组会怎么样?对于数组有哪些操作?
1、什么是数组:
“相同数据类型”的一些数的集合!
2、为什么需要数组?
对于数据之间有紧密联系的相同类型的数据,我们可以用数组的方式来定义;
3、有了数组之后有什么好处?
①:减少了错误发生的概率;
②:体现出了数据和数据之间的紧密联系;
4、定义数组和定义变量:
数组:一排一排的盖房子,之间有联系性;
变量:独栋别墅;
5、数组的分类:
一维数组和二维数组;(根据维度来分)
整型数组、字符型数组、浮点型数组.......(根据数据类型来分)
对于一维数组:
1、定义:数组的数据类型 数据的名字[常量或者常量表达式];
int num[]
2、初始化:
int main[5] = {1,2,3,4,5};
int main[5] = {1,2,3};
int main[5] = {0};
int main[5] = {3};
int main[] = {1,2,3,4,5};
//计算数组的元素个数:总价/单价
3、给数组赋值:
int main[5];
num[2] = 10; //将10这个数据保存到num[2]所对应的空间里;此时的num[2]就相当于空间的名字;
num[2] = num[10] //将num[10]里面的数据保存到num[2]里面去
4、引用:int num[N];
下标法:数组的下标从0开始,最后一个的下标是N-1;
num[i] 做左值,表示空间;
num[i]做右值,表示数据;
二维数组:
1、定义:数组的数据类型 数组名[常量表达式][常量表达式]
int num[3][3];
2、初始化:
int num[3][3] = {};
假设我的电脑是:4G = 1024*4M = 1024*4*1024KB = 1024*4*1024*1024Byte(字节)
int a = 4;
每个字节都是有地址的!一个 字节一个地址!
引用:int num[N][M];
下标法:数组的下标从[0][0]开始,最后一个下标是a[N-1][M-1];
num[i][j]做左值,表示空间;
num[i][j]做右值,表示数据;
注意的是:
二位数组在内存里面是按行进行存放的