C語言——基礎(chǔ)知識——預(yù)處理,常量定義,數(shù)據(jù)類型

2021-02-18    分類: 網(wǎng)站建設(shè)

數(shù)據(jù)類型,預(yù)處理,常量的定義,變量及運(yùn)算符.

----------------------------------------------------------------------------------------------------

C語言語法體系: 基本所有高級語言都可以這樣劃分.

1.數(shù)據(jù)類型 :

1.基本數(shù)據(jù)類型 : 整型,字符型,浮點(diǎn)型(float,double).

2.數(shù)組類型 : 一維數(shù)組(數(shù)組與字符串),二維數(shù)組,多維數(shù)組.

3.指針類型.

4.結(jié)構(gòu)體類型.

5.共用體類型.

6.void空類型.

7.枚舉型.

2.運(yùn)算符與表達(dá)式.

3.C語言程序結(jié)構(gòu).

1.預(yù)處理 : 預(yù)定義符號,宏定義,文件包含,條件編譯.

2.函數(shù) : 函數(shù)的定義,函數(shù)的申明,函數(shù)的調(diào)用,函數(shù)特殊參數(shù)的傳遞,標(biāo)準(zhǔn)I/O.

3.控制語句 : 條件判斷語句,循環(huán)語句,無條件跳轉(zhuǎn)語句,轉(zhuǎn)向語句.

----------------------------------------------------------------------------------------------

一、數(shù)據(jù)類型:

1.基本數(shù)據(jù)類型:

整型: int unsigned int : 數(shù)據(jù)長度4字節(jié).

short unsigned short : 數(shù)據(jù)長度2字節(jié).

long unsigned long : 數(shù)據(jù)長度4字節(jié).

編程中表示方法: 8進(jìn)制表示(0****),十進(jìn)制表示(****),十六進(jìn)制表示(0x********).

字符型: char : 數(shù)據(jù)長度1字節(jié).

unsigned char : 數(shù)據(jù)長度1字節(jié).

編程中表示方法: ASCII碼(十進(jìn)制整型數(shù))表示,單個(gè)字符表示'a'.

浮點(diǎn)型: float : 數(shù)據(jù)長度4字節(jié),6~7位有效數(shù)字(十進(jìn)制).

double : 數(shù)據(jù)長度8字節(jié),15~16位有效數(shù)字(十進(jìn)制).

long double : 數(shù)據(jù)長度8字節(jié),18~19位有效數(shù)字(十進(jìn)制).

有效數(shù)字 : 非零數(shù)位開始的數(shù)位的個(gè)數(shù).

編程中表示方法: 十進(jìn)制表示,指數(shù)形式表示 : <十進(jìn)制數(shù)>E(e)<指數(shù)>.比如2.38743E3 = 2387.43.

2.其它數(shù)據(jù)類型:

1.數(shù)組 : 數(shù)組就是同種數(shù)據(jù)類型數(shù)據(jù)的一個(gè)集合.數(shù)組中的元素(數(shù)據(jù))在內(nèi)存中是按順序存儲的.

2.指針 : 存儲設(shè)備中每一個(gè)字節(jié)的存儲空間都有一個(gè)地址,這個(gè)地址C語言中我們稱之為指針.指針變量就是用于存儲指針的變量.

3.結(jié)構(gòu)體: 結(jié)構(gòu)體用于保存多種數(shù)據(jù)類型的數(shù)據(jù).一個(gè)結(jié)構(gòu)體中可以包含多種數(shù)據(jù)類型的變量,這些變量我們稱之為結(jié)構(gòu)體成員.

4.共用體: 共用體與結(jié)構(gòu)體幾乎一模一樣,區(qū)別在于結(jié)構(gòu)體的大小由結(jié)構(gòu)體成員的數(shù)據(jù)長度和決定.而共用體的大小由共用體中大數(shù)據(jù)長度的成員的數(shù)據(jù)長度決定.

5.void型: void可以表示"空",也就是沒有,比如void test(){}就表示函數(shù)沒有返回值.

void也可以表示任意數(shù)據(jù)類型,比如void a;就表示變量a的數(shù)據(jù)類型沒有定義,可以根據(jù)需要進(jìn)行數(shù)據(jù)傳入.

6.枚舉類型: 不做介紹.

3.volatile類型修飾符:

volatile作為關(guān)鍵字,確保指令不會因?yàn)榫幾g器的優(yōu)化而省略,也就是防止編譯器對相應(yīng)代碼進(jìn)行優(yōu)化刪除.

例如 : int a[3];

a[0] = 1;

a[0] = 2;

a[0] = 3;

這段代碼在機(jī)器中表示不同的操作,會依次執(zhí)行.但編譯器會將上面4條語句優(yōu)化為 : int a[3];

a[0] = 3;

這樣就省略中間兩條代碼.而鍵入volatile(volatile int a[3];)就能避免編譯器的優(yōu)化而依次執(zhí)行所有語句.

4.數(shù)據(jù)類型強(qiáng)制轉(zhuǎn)換:

數(shù)據(jù)類型強(qiáng)制轉(zhuǎn)換就是將一種數(shù)據(jù)類型轉(zhuǎn)換為另外一種數(shù)據(jù)類型.

轉(zhuǎn)換方法: (強(qiáng)轉(zhuǎn)數(shù)據(jù)類型)<變量名>.

c語言中,float型數(shù)據(jù)在進(jìn)行運(yùn)算時(shí)是自動轉(zhuǎn)換為double型數(shù)據(jù)進(jìn)行處理的.

比如: int a = 3;

printf("%f",(float)a);

----------------------------------------------------------------------------------------------


二、"字"與"字節(jié)序":

1."字和"字長":

能夠由計(jì)算機(jī)一次完成處理的數(shù)據(jù)稱之為字,不同CPU體系結(jié)構(gòu)的字長會有所區(qū)別.現(xiàn)在通用的處理器(32位)字長是4字節(jié)(32bit).對于64位處理器而言,它的字長就是8字節(jié)(64bit).我們不要將"字長"與"數(shù)據(jù)長度"混淆,更不要與"字節(jié)"混淆.

2.字節(jié)序:

字節(jié)序是數(shù)據(jù)在內(nèi)存中的存儲方式.是一個(gè)字中,各個(gè)字節(jié)在內(nèi)存中存放的順序.

1.大端模式: 數(shù)據(jù)的高字節(jié)存儲在低地址中,低字節(jié)存儲在高地址中.

2.小端模式: 數(shù)據(jù)的高字節(jié)存儲在高地址中,低字節(jié)存儲在低地址中.

比如對于多字節(jié)數(shù)據(jù)0x4567ABCD

----------------- -----------------

地址 數(shù)據(jù) 地址 數(shù)據(jù)

0x0000000C CD 0x0000000C 45

0x00000008 AB 0x00000008 67

0x00000004 67 0x00000004 AB

0x00000000 45 0x00000000 CD

大端模式 小端模式

預(yù)處理:

預(yù)處理是編譯前所做的工作.編譯前,編譯器自動調(diào)用預(yù)處理程序?qū)υ创a中'#'開頭的預(yù)處理部分進(jìn)行處理,處理完畢之后,進(jìn)入源碼的編譯階段.

1.預(yù)定義符號:

常用的預(yù)定義符號: __FILE__ : 編譯的源文件名.

__FUNCTION__ : 當(dāng)前所在函數(shù)的函數(shù)名.

__DATE__ : 編譯日期.

__TIME__ : 編譯時(shí)間.

2.宏定義: 自定義一個(gè)宏(要符合標(biāo)識符的命名規(guī)則),用于表示任意數(shù)據(jù)或者表達(dá)式.

無參宏定義: #define 宏名 宏替換

比如: #define A 35 //A就代表整型數(shù)據(jù)35.

#define TEST "abddgdsfdlfj" //TEST就代表"abddgdsfdlfj"

#define TEST abddgdsfdlfj //TEST就代表abddgdsfdlfj

帶參宏定義: #define 宏名(參數(shù)表) 宏替換

比如: #define M(a,b) a+b-2

K = M(1,2) + 4;

---> K = (1 + 2) - 3 + 4

3.文件包含:

#include <name.h> //包含系統(tǒng)頭文件.

#include "name.h" //包含自定義頭文件.

文件包含允許嵌套,即在一個(gè)被包含文件中可以包含其它文件.

4.條件編譯: 根據(jù)不同的條件編譯不同代碼段.

#ifdef 宏名 //如果定義了宏"宏名",則編譯代碼段. #ifndef 宏名 //定義了宏"宏名",則編譯代碼段

代碼段; 代碼段;

#endif #endif

#ifdef 宏名 //如果定義了宏"宏名",則編譯代碼段1,否則編譯代碼段2;

代碼段1;

#else

代碼段2;

#endif

---------------------------------------------------------------------------------------------

#ifndef 宏名 //如果沒有定義宏"宏名",則編譯代碼段1,否則編譯代碼段2;

代碼段1;

#else

代碼段2;

#endif

---------------------------------------------------------------------------------------------

#if 表達(dá)式 //判斷表達(dá)式的邏輯值(真或假),若邏輯值為真,則編譯代碼段1,否則編譯代碼段2.

代碼段1;

#else

代碼段2;

#endif

----------------------------------------------------------------------------------------------

三、常量的定義:

1.const關(guān)鍵字定義常量:

1.普通常量: <cosnt> <數(shù)據(jù)類型> <常量名> = <常量值>;

2.const涉及指針: 暫時(shí)不做講解,有興趣的同學(xué)課后可以看看.

<const> <數(shù)據(jù)類型> *<指針變量名>;

: const修飾的是常量數(shù)據(jù).指針變量存儲的指針(地址)可以改變,但是存儲的指針(地址)指向的數(shù)據(jù)是一個(gè)不

能改變的常量。

<數(shù)據(jù)類型> *const <指針常量名>;

: const修飾的是常量指針.指針的指向,也就是指針本身是一個(gè)不能改變的常量,但指針指向的數(shù)據(jù)可以改變.

2.宏定義常量:

#define 宏名 常量

比如: #define A 35 //A就表示常量值35.任何地方使用宏A等于使用整型常量35.

變量,運(yùn)算符與表達(dá)式.

局部變量與全局變量簡介.

四、總結(jié):

上面是本人對于C基礎(chǔ)知識做出的總結(jié),如果有哪位小伙伴對C感興趣的話,可以私信我回復(fù)“資料”,我這里整理了許多對小白有用處的資料歡迎大家一起討論學(xué)習(xí)C.

分享標(biāo)題:C語言——基礎(chǔ)知識——預(yù)處理,常量定義,數(shù)據(jù)類型
文章URL:http://www.bm7419.com/news28/101628.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供電子商務(wù)、網(wǎng)站排名、外貿(mào)網(wǎng)站建設(shè)、用戶體驗(yàn)網(wǎng)站制作、建站公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設(shè)計(jì)公司