c語言知識點

2022-03-20 01:29:30 字數 2712 閱讀 4398

目錄流程圖

輸入輸出

運算子資料型別及運算

指標動態分配記憶體

結構體原碼 補碼 反碼

庫函式變數 定義 初始化:為變數賦值,分配記憶體空間

變數作用域

每個變數和函式有兩個屬性:型別和儲存類別。儲存類別分靜態儲存區和動態儲存區

練習流程圖 n-s圖

​ 都不屬於關鍵字,屬於庫函式

浮點型 分母型

需要用float或者double型,常量與浮點型相乘除時候,常量也要加小數點

void 空型別

是指向空型別或者不指向確定的型別的資料,並非是能指向任何型別的資料 p287頁

//如需指向

字元型與整型=整型(通過ascii碼)

運算

int i=1,j=5;

int c=i+(++j); //c為7

c=i+++j //c為6

賦值

int c=i=j; // 先將j的值賦給i,然後i的值賦給c

算數符 關係符 賦值符

a>b==c 等價於 (a>b)==c
5>3 && 8<4-!0

5>3 && 8<(4-!0)

//等價,結果都是0

陣列陣列名只代表陣列的首元素的位址

字元陣列處理

//puts函式

char str=;

puts(str);

//gets函式

char str[10];

get(str);

char str=;

str[11]='d';

puts(str);//結果為sunzhijian,第十位是'\0',puts發現\0後就結束輸出

char str=;

str[10]='d';

str[11]='d';

puts(str);//結果為sunzhijiandd

//二維陣列定義時 第二個下標必須宣告

字元陣列的庫函式操作
先include//比較

strcmp(str1,str2)//相同則0,以第乙個不相同的字母比較結果為準,str1》2則返回1,str《str2返回-1

//連線

strcat(str1,str2);//將str2連線到str1上去,且返回str1

//賦值

strcpy(str1,str2);//將str2按下標賦值到str1上去

strncpy(str1,str2,n);//將str2中前n個字元賦值到str1前n位上去

//實際長度

strlen(str);//等價於遍歷到str[i]=='\0';

//字元陣列的大小寫轉換

strlwr(str)//將字串大寫轉小寫

strupr(str)//將字串小寫轉大寫

要區別指標和指標變數,指標就是位址本身,就是乙個具體的位址值,而指標變數是用來存放位址的變數。所以認為指標是型別名是錯誤的,型別是沒有值的,只有變數才有其值。

指標變數的值是所指向變數的記憶體位址,在指標變數上加*代表指標所指向變數。通過※point_a可以對變數a進行操作。

由於資料在記憶體中所佔的位元組數和儲存方式的不同,指標必須指定基型別

指標變數只能賦值記憶體位址,不能直接賦值整型。但可以把指標指向到乙個整型數

*point_a == a;//二者是等價的

point_a == &a;//二者是等價的

陣列指標

指標陣列

int *p[4];//因為優先順序高於*,所有p先與組合,成為乙個包含四個元素的陣列,而int * 宣告陣列中的元素都是int型指標型別的

int (*p)[4];//p宣告為乙個指標變數,指向包含四個整型元素的一維陣列

多維陣列指標

若a是乙個二維陣列,則其性質為

函式指標

指向函式的指標

程式中定義了乙個函式,編譯時,會為其分配一段儲存空間,儲存空間的起始位址稱為函式的指標

int (*p)(int,int);//p是指向函式的指標,且函式引數為兩個整型,返回值為int型
int (*p)(int,int);//定義函式指標

p=max;//指標指向函式,不能將形參給出,否則就是把函式執行後的返回值給p了

(*p)(a,b);//屌用函式

函式型別為指標的函式

函式型別為指標的函式也就是定義乙個返回值為指標的函式

int *p(int,int){}//()優先順序高於*

//p先與()結合成函式,然後*宣告為int指標型別

動態分配記憶體

需要標頭檔案 # include

math

記住經典演算法

判斷素數(1-100內)

反向求解

如果i不能被2~i-1的數整除,則是素數

//判斷素數模組

int isprim(int x){

int i;

//從2開始

for(i=2;i閏年

c語言 知識點

遞迴方法 遞迴相比迴圈時間上快些,但是 遞迴比較占用空間,如果遞迴的次數超過十萬次後會導致資源占用完畢 標準的 優化技巧 消除迴圈 函式迴圈 函式 就地擴充套件 公共子表示式消除 改進暫存器分配 省略執行時對陣列邊界的檢查 迴圈不變數 移動 操作符長度消減 把指數操作符轉變為乘法操作 把乘法操作變為...

c語言知識點

2019 3 4 typedef void voidp 等同於typedef void voidp voidp a a null 即定義了乙個可以指向任何型別的指標 typedef voidpf zallback open file func of voidpf opeaque,const char...

c語言知識點

關於 va args define debug level,format,if level g printlevel else 這裡的 va args 表示可變引數,即上面.傳遞進來的多個引數,是當傳入引數為0時,去掉前面,防止編譯出錯 的另乙個用法如 define xname n x n,那xna...