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的值一樣,兩個指向的位置...