如果所有函數(shù)都在同一個(gè).c文件中。只需要在文件開始的地方定義變量就可以了。
創(chuàng)新互聯(lián)建站服務(wù)項(xiàng)目包括泗洪網(wǎng)站建設(shè)、泗洪網(wǎng)站制作、泗洪網(wǎng)頁(yè)制作以及泗洪網(wǎng)絡(luò)營(yíng)銷策劃等。多年來(lái),我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,泗洪網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到泗洪省份的部分城市,未來(lái)相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
....
int g_test;
main()
{
....
}
fun1()
{
....
}
fun2()
{
....
}
如果是要在多個(gè).c文件中的所有函數(shù)使用同一個(gè)變量。
可以用 extern聲明。
file.c
int g_int;
main()
{
。。。。。
}
對(duì)于工程中的其他文件,想訪問這個(gè)全局變量可以用
extern int g_int ;聲明
這樣就可以用了
這不是兩個(gè)函數(shù),這是一個(gè)函數(shù),extern "C" int listid(int id, OUT *);
中的extren通知編譯器int listid(int id, OUT *)不在本源代碼中實(shí)現(xiàn),
"c"通知編譯器用C調(diào)用方式調(diào)用在另外的一個(gè)源程序的函數(shù),
C語(yǔ)言默認(rèn)的調(diào)用方式就是C調(diào)用 C++就不同了,,所以最好加個(gè)"c"
另:調(diào)用方式規(guī)定了調(diào)用的時(shí)候輸入?yún)?shù)的順序和函數(shù)返回后輸入?yún)?shù)占用的空間由調(diào)用程序釋放還是由函數(shù)釋放。這東西不一定要太懂,知道用"c"去考慮調(diào)用方式就可以了.
參數(shù)不同也是可以的,但是執(zhí)行一定會(huì)有錯(cuò)誤,而且應(yīng)該不能出現(xiàn)同名不同參數(shù)的的令一個(gè)函數(shù)。要不連接的時(shí)候就找不到正確的函數(shù)。
把變量定義在主函數(shù)之外,即把變量設(shè)置為全局的。
一般我們都把變量的定義放在函數(shù)中,因此變量的范圍就是在本函數(shù)中。可是如果定義在所有函數(shù)的外面,這樣所有的函數(shù)中,都可以使用本變量。
你可以試一下這個(gè)程序。定義一個(gè)全局變量a,在主函數(shù)中進(jìn)行賦值,然后在子函數(shù)中進(jìn)行輸出,結(jié)果是5.
#includestdio.h
int a;
void func();//函數(shù)聲明
int main()
{
a=5;
func();
}
void func()
{
printf("%d\n", a);
}
+++++++++++++++++++++++++++++++++++++++++++++++++++
當(dāng)然,除了定義全局變量這個(gè)方法,還有其他的方法,那就是指針。在子函數(shù)的參數(shù)中傳遞變量的地址,依然可以使用該變量,依然能夠改變?cè)撟兞康闹怠R驗(yàn)橹骱瘮?shù)和子函數(shù)的變量共用的是同一個(gè)地址的變量,因此,不管在哪個(gè)函數(shù)中對(duì)變量進(jìn)行操作,都會(huì)影響變量。
比如下面這個(gè)程序,在主函數(shù)中a的值為5,將變量a的地址傳遞過(guò)去,子函數(shù)將該地址中的變量的值設(shè)置為3,然后主函數(shù)輸出,結(jié)果卻是3.
#includestdio.h
void func(int *b);//函數(shù)聲明
int main()
{
int a=5;
func(a);//把變量a的地址傳遞過(guò)去
printf("%d\n", a);
}
void func(int *b)
{
*b=3; //將地址b中變量的值設(shè)置為3
}
函數(shù):
1.C語(yǔ)言在相同的.c文件中一定不能定義名稱相同的函數(shù),即使是重載的,因?yàn)镃語(yǔ)言不支持重載,這樣鏈接的時(shí)候會(huì)報(bào)錯(cuò)。
2不同的.c文件中一般不能定義名稱相同的函數(shù),比如int func(int*);如果非要定義名稱相同的函數(shù),而且函數(shù)只在該(對(duì)應(yīng)的).c文件中使用,可以聲明成static類型。如兩個(gè)函數(shù)都定義為static int func(int*);這樣就可以定義成相同名字。
變量:
1.靜態(tài)變量在同一個(gè).c文件中可以命名相同,但是只能初始化一次,否則鏈接出錯(cuò)。而且實(shí)際只有一個(gè)該名字的變量。
如 static int tst; static int tst; //可以。
static int tst = 0; static int tst; //可以
static int tst = 0; static int tst = 0;//錯(cuò)誤
2.靜態(tài)變量在不同.c文件中可以命名相同。但是該變量只能在該.c文件中使用。
具體可以百度強(qiáng)符號(hào)與弱符號(hào)。
以上。
c語(yǔ)言中一個(gè)完整的函數(shù)由函數(shù)首部和函數(shù)體構(gòu)成,而且定義函數(shù)時(shí)兩者都是必不可少的。
函數(shù)定義的一般形式如下:
類型標(biāo)識(shí)符
函數(shù)名(形參表列)
//
這是函數(shù)首部
//
以下{
}內(nèi)的是函數(shù)體
{
說(shuō)明部分
執(zhí)行部分
}
舉例說(shuō)明如下:
//
定義一個(gè)不帶返回值的函數(shù)
//
函數(shù)功能:輸出形參的值
void
fun(int
a,
int
b)
{
printf("%d,
%d\n",
a,
b);
}
//
定義一個(gè)帶返回值的函數(shù)
//
函數(shù)功能:返回2個(gè)整數(shù)數(shù)的最大值
int
fun(int
a,
int
b)
{
return
ab
?
a
:
b;
}
已經(jīng)有人給你那么多方法了。。。我還是建議不要用extern去使全局變量,也不要把變量定義在頭文件,然后用include把變量包含進(jìn)其它源文件使用,不要這樣做!這是菜鳥的做法!
正確的做法是這樣的,你把變量定義在相應(yīng)的源文件中,定義成全局的,然后寫一個(gè)接口去讀取,充分利用封裝的思想!我舉個(gè)例子哈:
加入你的變量名是 A,定義在abc.c中。。。
這時(shí)候你的正確做法是 在abc.c中寫一個(gè)函數(shù),命名為 int GetAValue(void) { return A; }
這才是大神的做法!這樣的話如果是在同一個(gè)源文件中,可以直接訪問全局變量達(dá)到目的。如果是在不同的源文件的其它函數(shù),就調(diào)用你寫好的 GetAValue()函數(shù)去讀取!
本文名稱:C語(yǔ)言怎樣設(shè)置可用同函數(shù) C語(yǔ)言設(shè)置函數(shù)
轉(zhuǎn)載源于:http://m.kartarina.com/article18/hjgsgp.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供ChatGPT、企業(yè)網(wǎng)站制作、建站公司、品牌網(wǎng)站制作、App開發(fā)、企業(yè)建站
聲明:本網(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)