c语言主要由哪些指令构成,C语言程序的组成 - osc_9ezz4lqf的个人空间 - OSCHINA - 中文开源技术交流社区...

c程序的组成

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

*.c :c源代码文件

*.h :c头文件

.c(c源代码文件)组成

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

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

#include  

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值