C語言程序的組成


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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM