梓益C語(yǔ)言學(xué)習(xí)總結(jié)
成都創(chuàng)新互聯(lián)公司2013年成立,先為巴林右旗等服務(wù)建站,巴林右旗等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為巴林右旗企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。一、靜態(tài)變量與普通變量的區(qū)別
1.1、普通的全局變量
概念:
在函數(shù)外部定義的變量
作用范圍:
全局變量的作用范圍,是程序的所有地方。
只不過(guò)用之前需要聲明。聲明方法 extern int num; 聲明的時(shí)候,不要賦值。
生命周期:
程序運(yùn)行的整個(gè)過(guò)程,一直存在,直到程序結(jié)束。
注意:定義普通的全局變量的時(shí)候,如果不賦初值,它的值默認(rèn)為0
1.2、靜態(tài)全局變量 static
概念:
定義全局變量的時(shí)候,前面用static 修飾。
作用范圍:
static 限定了靜態(tài)全局變量的,作用范圍
只能在它定義的.c(源文件)中有效
生命周期:
在程序的整個(gè)運(yùn)行過(guò)程中,一直存在。
注意:定義靜態(tài)全局變量的時(shí)候,如果不賦初值,它的值默認(rèn)為0
2.1、普通的局部變量
概念:
在函數(shù)內(nèi)部定義的,或者復(fù)合語(yǔ)句中定義的變量
作用范圍:
在函數(shù)中定義的變量,在函數(shù)中有效
在復(fù)合語(yǔ)句中定義的,在復(fù)合語(yǔ)句中有效。
生命周期:
在函數(shù)調(diào)用之前,局部變量不占用空間,調(diào)用函數(shù)的時(shí)候,才為局部變量開辟空間,函數(shù)結(jié)束了,局部變量就釋放了。
在復(fù)合語(yǔ)句中定義的亦如此。
注意:定義局部變量的時(shí)候,如果不賦初值,它的值為隨機(jī)值
2.2、靜態(tài)的局部變量
概念:
定義局部變量的時(shí)候,前面加static 修飾
作用范圍:
在它定義的函數(shù)或復(fù)合語(yǔ)句中有效。
生命周期:
第一次調(diào)用函數(shù)的時(shí)候,開辟空間賦值,函數(shù)結(jié)束后,不釋放,以后再調(diào)用函數(shù)的時(shí)候,就不再為其開辟空間,也不賦初值,
用的是以前的那個(gè)變量。
注意:
1:定義普通局部變量,如果不賦初值,它的值是隨機(jī)的。
2:定義靜態(tài)局部變量,如果不賦初值,它的值是0
3:普通全局變量和靜態(tài)全局變量如果不賦初值,它的值為0
二、頭文件路徑
#include<> 在系統(tǒng)路徑下查找頭文件
#include“ ” 在當(dāng)前目錄下查找頭文件
三、a++ 先調(diào)用a再把它的值加一,++a 先把a(bǔ)的值加一再調(diào)用a
四、宏定義 #define
1、宏定義后不加分號(hào),宏定義的值不能改變
2、宏是在預(yù)編譯的時(shí)候進(jìn)行替換,無(wú)變量,不占內(nèi)存
3、宏定義可以防止不知含義的數(shù)字出現(xiàn),方便修改
4、可以定義任何類型
不帶參宏
#define PI 3.14
在預(yù)編譯的時(shí)候如果代碼中出現(xiàn)了PI 就用 3.14去替換。
宏的好處:只要修改宏定義,其他地方在預(yù)編譯的時(shí)候就會(huì)重新替換。
終止宏:#undef PI //終止PI的作用
帶參宏(宏函數(shù))
#define S(a,b) (a)*(b)
注意帶參宏的形參 a和b沒(méi)有類型名,
S(2,4) 將來(lái)在預(yù)處理的時(shí)候替換成 實(shí)參替代字符串的形參,其他字符保留,(2) * (4)
五、條件編譯(選擇性編譯)
#ifdef AAA
代碼段一
#else
代碼段二
#endif
如果在當(dāng)前.c ifdef 上邊定義過(guò)AAA ,就編譯代碼段一,否則編譯代碼段二
常用在.h文件頭部,如:文件fun.h開頭寫上
#ifndef FUN_H
# define FUN_H
.......代碼段.......
# endif
防止fun.h文件被重復(fù)引用
六、動(dòng)態(tài)庫(kù)和靜態(tài)庫(kù)
一:動(dòng)態(tài)編譯
動(dòng)態(tài)編譯使用的是動(dòng)態(tài)庫(kù)文件進(jìn)行編譯
gcc hello.c -o hello
咱們使用的是動(dòng)態(tài)編譯方法
二:靜態(tài)編譯
靜態(tài)編譯使用的靜態(tài)庫(kù)文件進(jìn)行編譯
gcc -static hello.c -o hello
三:靜態(tài)編譯和動(dòng)態(tài)編譯區(qū)別
1:使用的庫(kù)文件的格式不一樣,動(dòng)態(tài)編譯使用動(dòng)態(tài)庫(kù),靜態(tài)編譯使用靜態(tài)庫(kù)
注意:
1:靜態(tài)編譯要把靜態(tài)庫(kù)文件打包編譯到可執(zhí)行程序中。
2:動(dòng)態(tài)編譯不會(huì)把動(dòng)態(tài)庫(kù)文件打包編譯到可執(zhí)行程序中,它只是編譯鏈接關(guān)系
制作靜態(tài)庫(kù):.c文件mylib.c
gcc -c mylib.c -o mylib.o生成mylib.o
ar rc libtestlib.a mylib.o生成靜態(tài)庫(kù)libtestlib.a
注意:靜態(tài)庫(kù)起名的時(shí)候必須以lib開頭以.a結(jié)尾
編譯程序:gcc -static mytest.c libtestlib.a -o mytest
制作動(dòng)態(tài)鏈接庫(kù):gcc -shared mylib.c -o libtestlib.so //使用gcc編譯、制作動(dòng)態(tài)鏈接庫(kù)
動(dòng)態(tài)鏈接庫(kù)的使用:gcc mytest.c libtestlib.so -o mytest
七、
出現(xiàn)段錯(cuò)誤,一定是指針用錯(cuò)了
定義字符數(shù)組時(shí),記得初始化為空 char str[20]=" ",將空間定義大點(diǎn),后期可以進(jìn)行優(yōu)化
八、創(chuàng)建鏈表的兩種方法
頭插法-有返回值
(STU *)link_creat_head(STU *p_head,STU *p_new)
{
if(p_head==NULL) //當(dāng)?shù)谝淮渭尤腈湵頌榭諘r(shí),head執(zhí)行p_new
{
p_head=p_new;
p_new->next=NULL;
}
else //第二次及以后加入鏈表
{
p_new->next=p_head; //將新申請(qǐng)的節(jié)點(diǎn)加入鏈表
p_head=p_new;
}
return p_head;
}
尾插法-無(wú)返回值
void link_creat_head(STU **p_head,STU *p_new)
{
STU *p_mov=*p_head;
if(*p_head==NULL) //當(dāng)?shù)谝淮渭尤腈湵頌榭諘r(shí),head執(zhí)行p_new
{
*p_head=p_new;
p_new->next=NULL;
}
else //第二次及以后加入鏈表
{
while(p_mov->next!=NULL)
{
p_mov=p_mov->next; //找到原有鏈表的最后一個(gè)節(jié)點(diǎn)
}
p_mov->next=p_new; //將新申請(qǐng)的節(jié)點(diǎn)加入鏈表
p_new->next=NULL;
}
}
鏈表逆序:每個(gè)節(jié)點(diǎn)的next指針的方向調(diào)頭反向
STU *reverse(STU *head)
{
STU *pf,*pb,*r;
pf=head;
pb=pf->next;
while(pb!=NULL)
{
r=pb->next;
pb->next=pf;
pf=pb;
pb=r;
}
head->next=NULL;
head=pf;
return head;
}
九、fgets
stdout、stdin 標(biāo)準(zhǔn)輸入輸出緩沖區(qū)指針
用fgets代替scanf進(jìn)行輸入讀取,避免緩沖區(qū)溢出
buf1[20]=" ";
fgets(buf1, sizeof(buf1)-1, stdin);
buf1(strlen(buf1)-1)='\0';
printf("%s\n", buf1);
如果和scanf一起用,要先讀出緩沖區(qū)中的\n, char ch=0; scanf("%c", &ch);
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
分享題目:梓益C語(yǔ)言學(xué)習(xí)總結(jié)-創(chuàng)新互聯(lián)
鏈接URL:http://vcdvsql.cn/article16/cdjdgg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、Google、云服務(wù)器、外貿(mào)網(wǎng)站建設(shè)、App設(shè)計(jì)、全網(wǎng)營(yíng)銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容