追求卓越 因为经历,所以幸福
分类: C/C++
2013-09-01 14:35:22
? 变量和作用域
1.全局变量的初始化
1) 如果全局变量没有初始化,那么编译器在编译的时候就会把这个变量初始化为0
2) 全局变量在初始化的时候就不能做变量运算的,它只能用常量来初始化。
2.局部变量的作用域
3.其它作用域
1) 在作用域的开关是可以定义变量的,而不仅仅是在函数的开始处。
2) { }也是一个作用域
? 多文件编程
以Hello.c main.c hello.h为例
4.预编译头文件:
#ifndef __HELLO_H__
#define __HELLO_H__
#endif
作用:防止头文件重复定义
5.头文件中用<>与“”包含头文件的区别
#include
#include "hello.h"
<>:首先从系统预定义的头文件路径中去查找该头文件 /usr/include/
“”:首先从当前工程目录下面去查找头文件,如果没有找到,则去工程指定路径下查找。 -I 用于指定头文件路径
例子:
gcc main.c hello.c -o main -I ../
技巧:在VIM中光标定位到自定义的头文件,按下gf进入头文件的定义
退出头文件查看:CTRL+o
? 增量式开发
中心思想:步步为赢,逐个击破
任何一个大型软件或项目的开发,都是由小的代码或功能函数组成。
? 理解递归
中心思想:不到黄河心不死,不见棺材不落泪
必须有一个退出的条件,不然它就真的不死心了。
0的阶乘等于1
题目:求1-n的阶乘
实例:
BIN = recurrence
LDFLAGS = -lpthread
CFLAGS += -g -Wall
LIBS = -L .
all:$(BIN)
OBJECT=${patsubst %.c, %.o, ${wildcard *.c}}
$(BIN):${OBJECT}
${CC} -o $@ $^ $(LDFLAGS) $(LIBS)
.PHONY:clean
clean:
-rm *.o $(BIN)
代码:
#include
int recurrence(int n)
{
if(n == 0)
return 1;
return n*recurrence(n-1);
}
int main()
{
int n;
int result;
printf("Please input a number:");
scanf("%d",&n);
result = recurrence(n);
printf("%d\n",result);
return 0;
}
简化后的Makfile:
BIN = recurrence
#LDFLAGS = -lpthread
CFLAGS += -g -Wall
all:$(BIN)
OBJECT=${patsubst %.c, %.o, ${wildcard *.c}}
$(BIN):${OBJECT}
.PHONY:clean
clean:
rm *.o $(BIN) -f