C语言程序的组成

Posted on 2019-07-07 20:04  不叫柒桓叶  阅读(2511)  评论(0编辑  收藏  举报

c程序的组成

由一个或多个.c.h文件组成

*.c c源代码文件

*.h :c头文件

 

.cc源代码文件)组成

1)预处理命令 :以'#'开头的行

1)文件包含命令:#include 把后面的那个文件的内容在此处展开

#include  <stdio.h>

or

#include "stdio.h"

 

两种都是文件包含的命令形式,都是把后面的那个文件的内容在此处展开

 

区别:

<> 和 “” 区别仅仅只在于文件搜索的默认路径不一样

<> :会在标准的头文件路径下去一个一个搜索  /usr/include

"" :会在当前工程下去找,如果没找到,在到标准的头文件路径下去搜索

 

(2)宏定义命令

仅仅只是“替换”作用

1)在一些程序中经常要用到可能需要频繁修改的常量

2)给一些有意义的常量

 

#define 宏名  要替换的常量或表达式

 

#define LED_ON 1

typedef的话是相当于新声明了一个类型。

例如:typedef struct node{int data, struct node *next};

这是单链表的典型定义,假如你需要在后面main函数或者其他函数使用的话,你可以使用struct node *p = malloc(sizeof(struct node))或者node *p = malloc(sizeof(*p))

别人博客上是如此解释的:

typedef是类型定义的意思。typedef struct 是为了使用这个结构体方便。

具体区别在于:

struct node {}这样来定义结构体的话。在申请node 的变量时,需要这样写,struct node n;

若用typedef,可以这样写,typedef struct node{}NODE; 。在申请变量时就可以这样写,NODE n;

区别就在于使用时,是否可以省去struct这个关键字。

 

练习:

写一个宏,返回两个对象的最大值

 

#define MAX(a,b)  (a)>(b)?(a):(b)  

 

=> MAX(3+5,6+7)

 

XXX(a,b)  (a)/(b)

 

eg:XXX(2+3,4+5)

2+3/4+5

 

int a = 5;

MAX(a++,4);

 

(a++) > (4) ? (a++) : (4)

 

#define MAX(a,b)  ({

typeof(a) _a = a;

typeof(b) _b = b;

(_a)>(_b)?(_a):(_b) ;

}

)

3)条件编译:选择那些代码编译,哪些不编译

 

int main()

{

....

printf();

....

printf();

}

 

(1) #if 1/0

YYYYY

#else //可不要

XXXXX

#endif

 

=====

#define W 1

#if W

YYYYY

#else //可不要

XXXXX

#endif

 

====

#define W 1

#ifdef W

XXXXX

#else

YYYYY

#endif

 

(2)全局声明语句

“声明”:c语言中声明,声明一个名称就是把一个标识符与某个C语言对象相关

 

c语言对象:变量,函数,数组,类型

 

=》变量声明

函数声明

数组声明

类型声明

 

3)代码部分

C语言中的代码是以“函数”形式组织的。

C语言中的指令必须要在函数内部

c函数有两部分组成

函数头

函数体

 

C语言函数体主要有两部分组成:

局部声明

c语句(指令)组成

 

C语句:

1.控制语句:完成一定的控制功能

if/else

for/while/do_while

continue

break

switch

goto

return

 

2.函数调用语句

printf("fgeui");

 

3.表达式语句

由一个表达式+一个;构成的一个语句

a = 4;

4.空语句

;

5.复合语句 :用一对{}括起来的语句

{

 

}

 

.h文件组成

一般由

预处理命令

声明部分

组成

#ifndef _SUM_H_

#define _SUM_H_

 

 

 

#endif

=>防止头文件被重复包含

 

 

 

c程序设计结构

1.顺序

2.选择

3.循环

 

指针常量:指向常量的指针

不可以改变指向变量的内容,但是可以改变指向某个变量

 

const int*p;

 

int const *p;

 

 

常量指针:不可以改变他指向哪个变量,但是改变已经指向的某变量的内容

 

int * const p = &a;//必须要初始化,指向常量,不能改变

 

 

const

extern

static

 

char s[] = {'1','2'};

 

 

 

 

 END

Copyright © 2024 不叫柒桓叶
Powered by .NET 9.0 on Kubernetes