- 符號(hào)常量 # define PI 3.1416
- 常變量 const int a =3; 有類型,占存儲(chǔ)單元,不可以改變值
- 變量在存儲(chǔ)單元中以補(bǔ)碼形式存儲(chǔ).整數(shù)的補(bǔ)碼是他的二進(jìn)制,負(fù)數(shù)的補(bǔ)碼是他絕對(duì)值的二進(jìn)制按位取反在加1.最高位代表正負(fù).
- %d 十進(jìn)制輸出,%c 字符形式輸出 %s 字符串輸出 %f 浮點(diǎn)數(shù) %e 指數(shù) %o 八進(jìn)制 % x 十六進(jìn)制 %u無符號(hào)整型 %g浮點(diǎn)數(shù)
- 字符串?dāng)?shù)組會(huì)自動(dòng)在有效字符的后邊加一個(gè) '\0' 結(jié)束位,標(biāo)識(shí)字符串結(jié)束.
- 在調(diào)用函數(shù)過程中,系統(tǒng)會(huì)把實(shí)參的值傳遞給被調(diào)用函數(shù)的形參.實(shí)參向形參傳遞是值傳遞.形參和實(shí)參占有不同的存儲(chǔ)單元,形參的值發(fā)生改變,無法修改實(shí)參的值.
- 數(shù)組元素可作為函數(shù)實(shí)參.不能作為函數(shù)形參.因?yàn)樾螀⒌目臻g是臨時(shí)分配的.用數(shù)組元素做實(shí)參時(shí),把實(shí)參的值傳遞給形參,是值傳遞的方式.用數(shù)組名做函數(shù)實(shí)參時(shí),想形參傳遞的是數(shù)組首元素的地址.
- 全局變量.定義在函數(shù)外的變量.局部變量.定義在函數(shù)內(nèi)的變量.
- 全局變量存放在靜態(tài)存儲(chǔ)區(qū).局部變量,函數(shù)形參,返回值存儲(chǔ)在動(dòng)態(tài)存儲(chǔ)區(qū).
- 變量和函數(shù)有兩個(gè)屬性.數(shù)據(jù)類型(int ,float) 存儲(chǔ)類別(auto,statis,register,extern)
- 局部變量不聲明為static時(shí),都是auto(自動(dòng)變量).動(dòng)態(tài)分配存儲(chǔ)空間.auto可省略
- static 聲明的局部變量在函數(shù)結(jié)束后不會(huì)消失且保存原值.靜態(tài)局部變量在靜態(tài)存儲(chǔ)區(qū)分配存儲(chǔ)單元.在編譯時(shí)賦初值,且只賦初值一次.
- register 聲明的變量叫寄存器變量.存放在cpu的寄存器中,讀取速度快.
- extern 聲明的全局變量,可以把該外部變量的作用域擴(kuò)大.
- 全局變量用static修飾后叫靜態(tài)外部變量.只能在本文件使用.
- 內(nèi)部函數(shù). 用static修飾,只能再本文件中被訪問. 外部函數(shù),用extern修飾,可以被其他文件訪問.可省略.
- 一個(gè)變量專門存放另一個(gè)變量的地址,它叫指針變量. 指針就是地址的意思.
- int * point; 指針定義. 用來指定指針變量point 可以指向的變量類型. *point 用來獲得該指針指向的變量.
& 取地址運(yùn)算, &a 是a的地址, * 指針運(yùn)算. int * point =&a; *point 和 a 等價(jià).都表示 a的值. point 和 &a等價(jià),表示a的地址. - 不能通過調(diào)用函數(shù)來改變實(shí)參指針的值.但可以改變實(shí)參指針?biāo)赶虻淖兞康闹?
- 數(shù)組名代表數(shù)組首元素地址,是一個(gè)指針常量. int a[] ={1,3}, int * p =&a[0]; 和 int * p=a;等價(jià).都是a[0]的首地址. * (p+5)==*(a+5) ==a[5]; 若 p=&a[0], 則 *p++ 輸出a[0] p==&a[1]; 而 * ++p 輸出a[1] p==&a[1];
- 二維數(shù)組中, int a[3][4] a代表首行的地址,a+1代表第二行的首地址,a+2代表第三行的首地址.a=&a[0];a+1=&a[1];a+2=&a[2];或者說 a=a[0]; (a+1)=a[1];
a[0] ,a[1],a[2]是一維數(shù)組名,代表各行首元素地址既 a[0]==&a[0][0],a[1] = &a[1][0],a[2]=&a[2][0];
a[0]+1 =&a[0][1] ; a[0]+2 =&a[0][2] ; a[1]+1 =&a[1][1] ;
a[0]=(a+0); a[1] =(a+1); a[0]+1 =(a +0)+1=&a[0][1]; a[1]+2=(a+1)+2=&a[1][2];
(a[1]+2)=(*(a+1)+2)=a[1][2];
二維數(shù)組相當(dāng)于指向指針的指針. - int (* p)[4]; 表示 指針變量p指向包含4個(gè)整型元素的一維數(shù)組. 既p是指向一維數(shù)組的指針.
int a[3][4]; int (* p)[4] ; p=a; p 和a 都指向二維數(shù)組的第一行. - char str[] =" hello world"; char* strB ="hello world"; 字符串是按照字符數(shù)組存儲(chǔ)的.所以可以用指針引用.指針strB 指向字符串常量的第一個(gè)字符. 字符指針變量的值可以改變. 字符數(shù)組代表一個(gè)固定的值.(數(shù)組首元素地址),不能改變.
- 函數(shù)指針.編譯時(shí),回味函數(shù)代碼分配存儲(chǔ)空間.這段存儲(chǔ)空間的起始地址就是這個(gè)函數(shù)的指針.可以通過函數(shù)指針來調(diào)用函數(shù). 定義方式 類型名 (* 指針變量)(函數(shù)形參類型) int (* p)(int , int) 只能指向 max(int a,int b) 這種函數(shù).
- 指針數(shù)組. 既元素都是指針的數(shù)組. int *p[4]; 格式為 類型名 * 數(shù)組名[數(shù)組長度]; 數(shù)組本身就是指針.所以指針數(shù)組其實(shí)就是 指向指針的指針. int ** a ; == int *p[4] ;
- 堆可以需要時(shí)申請(qǐng)內(nèi)存.不需要時(shí)釋放.并且只能通過指針來引用.分配內(nèi)存方法
void *malloc(unsigned int size); 分配一個(gè) size大小的連續(xù)空間.返回值是該空間的首地址.
void *calloc(unsigned n,unsigned size)l //分配n個(gè) size大小的連續(xù)空間.可以用來保存數(shù)組.返回值是空間首地址
void free( void *p) //是否p所指向的動(dòng)態(tài)空間.
void *realloc(void *p,unsigned int size ); p為剛分配的動(dòng)態(tài)空間首地址. 本函數(shù)可以重新分配 p指向的空間的大小. - 結(jié)構(gòu)體 .由不同類型數(shù)據(jù)組成的型數(shù)據(jù)結(jié)構(gòu).結(jié)構(gòu)體類型的形式: struct 結(jié)構(gòu)體名 {類型 成員名 ; 類型 成員名;};
struct Student{ int num; char sex;};
結(jié)構(gòu)體類型變量
struct 結(jié)構(gòu)體名{ 成員表列 } 變量名表列; 或者 struct { 成員表列 ;}變量名表列;
結(jié)構(gòu)體指針變量. 指向結(jié)構(gòu)體的地址.可以通過結(jié)構(gòu)體指針變量來操作結(jié)構(gòu)體中的元素;
struct Student p; p->name;==(p).name; 可以得到結(jié)構(gòu)體變量中name的值; - 公用體變量.使幾個(gè)不同類型的變量共享同一段內(nèi)存的結(jié)構(gòu)
union 公用體名{ 成員標(biāo)列 ;}變量表列; 如 union Data{ int i;char ch;float f;} a ,b,c ;
公用體變量大小為最長的成員的內(nèi)存大小.結(jié)構(gòu)體變量大小為所有成員的內(nèi)存大小之和;
只能引用公用提變量的成員. 如 a.i; 在同一時(shí)間.公用體變量只能存放一個(gè)值; - typedef 聲明新類型.
typedef int Integer ; 指定用Integer為類型名,作用與int 一樣.
typeder struct { int month;int day;int year;} Date; 聲明新類型名Data 代表上邊的結(jié)構(gòu)體. - 文件讀寫. 文件類型結(jié)構(gòu)體聲明
typedef stuct{ short leval; unsigned flags; char df; unsigned char hold; short bsize;}FIFE;
文件類型指針. FILE* fp; fp指向某一文件的文件信息區(qū)域,通過該文件信息區(qū)中的信息能訪問該文件.
文件打開 FILE * fp= fopen(文件名,使用文件方式); 使用文件方式包括 r,w,a, 只讀,只寫,追加等.
文件關(guān)閉 fclose(文件指針); fclose(fp);
讀取文件一個(gè)字符 fgetc(fp) ,寫入字符 fputc(ch,fp); fgets(str,n,fp); 讀取長度n的字符存放早str中, fputs(str,fp); 寫入str到fp指向的文件中.
C語言基礎(chǔ)
最后編輯于 :
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
- 文/潘曉璐 我一進(jìn)店門罪针,熙熙樓的掌柜王于貴愁眉苦臉地迎上來彭羹,“玉大人,你說我怎么就攤上這事泪酱∨梢螅” “怎么了还最?”我有些...
- 文/不壞的土叔 我叫張陵,是天一觀的道長毡惜。 經(jīng)常有香客問我拓轻,道長,這世上最難降的妖魔是什么虱黄? 我笑而不...
- 正文 為了忘掉前任悦即,我火速辦了婚禮,結(jié)果婚禮上橱乱,老公的妹妹穿的比我還像新娘辜梳。我一直安慰自己,他們只是感情好泳叠,可當(dāng)我...
- 文/花漫 我一把揭開白布作瞄。 她就那樣靜靜地躺著,像睡著了一般危纫。 火紅的嫁衣襯著肌膚如雪宗挥。 梳的紋絲不亂的頭發(fā)上,一...
- 文/蒼蘭香墨 我猛地睜開眼踢械,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了魄藕?” 一聲冷哼從身側(cè)響起内列,我...
- 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎背率,沒想到半個(gè)月后话瞧,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
- 正文 獨(dú)居荒郊野嶺守林人離奇死亡退渗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
- 正文 我和宋清朗相戀三年移稳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片会油。...
- 正文 年R本政府宣布,位于F島的核電站胶征,受9級(jí)特大地震影響塞椎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜睛低,卻給世界環(huán)境...
- 文/蒙蒙 一案狠、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧钱雷,春花似錦骂铁、人聲如沸。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至套蒂,卻和暖如春钞支,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背操刀。 一陣腳步聲響...
- 正文 我出身青樓信夫,卻偏偏與公主長得像,于是被迫代替她去往敵國和親卡啰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...