C語言知識小結

2021-07-31 09:06:33 字數 4123 閱讀 8625

c語言小結

1.概述

源程式.c

目標程式.obj

可執行目標程式.exe

2.資料型別 運算子 表示式

基本型別--整型,字元型,浮點型

構造型別--陣列,結構,聯合,列舉

指標型別

空型別變數命名的規定:

只能由字母,數字,下劃線組成,第乙個字元必須為字母或下劃線

整型資料

int   4個位元組 範圍:-2^31~2^31-1

short 2個位元組 範圍:-2^15~2^15-1

long  4/8個位元組 

整型資料的溢位

浮點型資料

float        4個位元組 有效數字:6~7位

double       8個位元組 有效數字:15~16位

long double  16個位元組 有效數字:18~19位

浮點型資料丟失精度

字元型資料

1.字元常量 'a'

2.轉義字元('\r'回到字元開頭 '\b'退格)

3.字元變數

4.字串常量

運算子1.算術運算子

2.關係運算子

3.邏輯運算子

4.位運算子(<< >> ~ |∧&)

&--a&0  一定等於0

a&0xffff  一定等於本身

~(相同為0,不同為1)

5^0   得到的是5  本身

5^5   得到的是零

逗號表示式整體的值,是最後乙個逗號後面的表示式的值

tips:

1.scanf 阻塞函式 當標準輸入緩衝區為空時,scanf會處於阻塞狀態

2.重新整理標準輸入緩衝區   清空  fflush(stdin)

3.getch():/getchar()

所在標頭檔案:conio.h

函式用途:從控制台讀取乙個字元,但不顯示在螢幕上

例如:char ch;或int ch;

getch();或ch=getch();

用getch();會等待你按下任意鍵,再繼續執行下面的語句;

用ch=getch();會等待你按下任意鍵之後把該鍵字元所對應的ascii碼賦給ch,再執行下面的語句。

4.長資料賦值給短資料,需要強制型別轉換

3.選擇

if-else語句

switch語句

格式:switch(表示式)

{case 常量表示式1:語句1

case 常量表示式2:語句2

…case 常量表示式n:語句n

default:語句n+1   

}加break與不加break的區別

4.迴圈

goto語句

while語句

do-while語句

for語句

break語句和continue語句

5.陣列

一維陣列的定義和引用

int a[5];

sizeof(a);  陣列大小 20個位元組

二維陣列的定義和引用

字元陣列

字串處理函式

1.puts();gets();

str系列

1.strlen--求字串的長度

2.strcpy--複製字串

3.strcmp--比較字串的大小

4.strcat--拼接字串

6.指標

直接訪問

間接訪問

一級指標--存放某一變數的位址

指標變數只能存放位址

引用乙個陣列元素,可以用:

(1) 下標法,如a[i]形式;

(2) 指標法,如*(a+i)或*(p+i)

二維陣列與指標

字串與指標

指標陣列

int *p[4];

陣列指標

int (*p)[4];

二級指標

int **p;

7.函式

實參和形參

函式的巢狀呼叫

函式的遞迴呼叫

區域性變數和全域性變數

自動的(auto)

靜態的(static)

暫存器的(register)

外部的(extern)

8.結構體

1)型別與變數是不同的概念

編譯時,對型別是不分配空間的,只對變數分配空間

2)不能將乙個結構體變數作為乙個整體進行輸入和輸出

3).運算子的優先順序最高

4)乙個結構體變數的指標就是該變數所佔據的記憶體段的起始位址。可以設乙個指標變數,用來指向乙個結構體變數,此時該指標變數的值是結構體變數的起始位址。指標變數也可以用來指向結構體陣列中的元素

5)以下3種形式等價:

結構體變數.成員名 (*p).成員名  p->成員名

6)p->n得到p指向的結構體變數中的成員n的值。p->n++ 得到p指向的結構體變數中的成員n的值,用完該值後使它加1。++p->n 得到p指向的結構體變數中的成員n的值加1,然後再使用它。

7)(++p)->num 先使p自加1,然後得到它指向的元素中的num成員值(即10102)。

(p++)->num 先得到p->num的值(即10101),然後使p自加1,指向stu[1]

8)malloc();//其函式原型為void *malloc(unsigned int size);其

作用是在記憶體的動態儲存區中分配乙個長度為

size的連續空間

calloc();//其函式原型為void *calloc(unsigned n,

unsigned size);其作用是在記憶體的動態儲存區

中分配n個長度為size的連續空間

free();//其函式原型為void free(void *p);其作用

是釋放由p指向的記憶體區,使這部分記憶體區能

被其他變數使用

9)共用體

使幾個不同的變數共占同一段記憶體的結構

10)列舉型別

11)typedef

#define是在預編譯時處理的,它只能作簡單的字串

替換,而typedef是在編譯時處理的。實際上它並不是

作簡單的字串替換,而是採用如同定義變數的方法

那樣來宣告乙個型別

9.檔案

1)文字檔案

2)二進位制檔案

3)檔案的開啟fopen();

檔案的關閉fclose();

檔案的讀寫

1)字元輸入輸出函式(fputc()和fgetc())

fputc函式

函式呼叫:

fputc ( ch,fp ) ; 函式功能: 

將字元(ch的值)輸出到fp所指向的檔案中去。 

返回值:

如果輸出成功,則返回值就是輸出的字元;

如果輸出失敗,則返回乙個eof。

fgetc函式

函式呼叫:

ch=fgetc(fp);

函式功能: 

從指定的檔案讀入乙個字元,該檔案必須是以讀或

讀寫方式開啟的。 返回值:

讀取成功乙個字元,賦給ch。

如果遇到檔案結束符,返回乙個檔案結束標誌

eof 。

2)資料塊讀寫函式(fread()和fwrite())函式呼叫:fread (buffer,size,count,fp);fwrite(buffer,size,count,fp); 

引數說明:

buffer:是乙個指標。對fread 來說,它是讀入資料的存放位址。對fwrite來說,是要輸出資料的位址(均指起始位址)。

size:  要讀寫的位元組數。count: 要進行讀寫多少個size位元組的資料項。

fp:    檔案型指標。

3)格式化讀寫函式(fprintf()和fscanf())函式呼叫:fprintf ( 檔案指標,格式字串,輸出表列);fscanf  ( 檔案指標,格式字串,輸入表列); 函式功能: 

從磁碟檔案中讀入或輸出字元。 

C語言移位知識小結

關於c語言移位功能的知識小結如下 1,進行2的n次方計算,使用移位效率會提公升很多 2,移位有時候會導致資料丟失,但有時候這正是我們要的功能 3,右移位操作是不可移植的 4,移位的操作符好是負數的時候,行為不確定。關於第4點進行一點簡單的驗證,寫 如下 include stdio.h int mai...

C語言知識小結(五)

二維陣列 二維陣列的定義 型別 陣列名 常量表示式 常量表示式 例如 int a 2 3 float b 3 4 二維陣列的引用 陣列名 下標 下標 例如 a 4 3 二維陣列的初始化 1 分行給二維陣列賦初值 定義的時候賦值 int a 3 4 2 將所有的陣列放在乙個括號內 int a 3 4 ...

C語言 指標相關知識小結

1.int p null 和 p null的區別 int p null指的是將乙個指標初始化為null,具體過程為 int p p null。2.a與a的區別 inta 5 int p a int q a 這樣的 對嗎?解釋 a得到陣列的位址。a表示陣列首元素的首位址。a的a的值一樣,兩個指向的位置...