C语言技巧

 

?  变量和作用域

1.全局变量的初始化

1)   如果全局变量没有初始化,那么编译器在编译的时候就会把这个变量初始化为0

2)   全局变量在初始化的时候就不能做变量运算的,它只能用常量来初始化。

2.局部变量的作用域

3.其它作用域

1)   在作用域的开关是可以定义变量的,而不仅仅是在函数的开始处。

2)   {  }也是一个作用域

?  多文件编程

Hello.c main.c hello.h为例

4.预编译头文件:

#ifndef __HELLO_H__

#define __HELLO_H__

#endif

作用:防止头文件重复定义

5.头文件中用<>与“”包含头文件的区别

#include <stdio.h>

#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 <stdio.h>

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

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值