把變量定義在主函數(shù)之外,即把變量設(shè)置為全局的。
河南網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)從2013年開始到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。
一般我們都把變量的定義放在函數(shù)中,因此變量的范圍就是在本函數(shù)中。可是如果定義在所有函數(shù)的外面,這樣所有的函數(shù)中,都可以使用本變量。
你可以試一下這個程序。定義一個全局變量a,在主函數(shù)中進行賦值,然后在子函數(shù)中進行輸出,結(jié)果是5.
#include
int a;
void func();//函數(shù)聲明
int main()
{
a=5;
func();
}
void func()
{
printf("%d\n", a);
}
+++++++++++++++++++++++++++++++++++++++++++++++++++
當(dāng)然,除了定義全局變量這個方法,還有其他的方法,那就是指針。在子函數(shù)的參數(shù)中傳遞變量的地址,依然可以使用該變量,依然能夠改變該變量的值。因為主函數(shù)和子函數(shù)的變量共用的是同一個地址的變量,因此,不管在哪個函數(shù)中對變量進行操作,都會影響變量。
比如下面這個程序,在主函數(shù)中a的值為5,將變量a的地址傳遞過去,子函數(shù)將該地址中的變量的值設(shè)置為3,然后主函數(shù)輸出,結(jié)果卻是3.
#include
void func(int *b);//函數(shù)聲明
int main()
{
int a=5;
func(a);//把變量a的地址傳遞過去
printf("%d\n", a);
}
void func(int *b)
{
*b=3; //將地址b中變量的值設(shè)置為3
}
因為語法就是這樣啊,函數(shù)調(diào)用直接使用其函數(shù)名即可,函數(shù)是void類型只是標(biāo)識該函數(shù)沒有返回值而已。
【void的含義】
void的字面意思是“無類型”,void *則為“無類型指針”,void *可以指向任何類型的數(shù)據(jù)。
void幾乎只有“注釋”和限制程序的作用,因為從來沒有人會定義一個void變量, void真正發(fā)揮的【作用】在于:
(1) 對函數(shù)返回的限定;
(2) 對函數(shù)參數(shù)的限定。
我們知道,在定義函數(shù)時,加在函數(shù)名前的“void”表示該函數(shù)沒有返回值。但在調(diào)用時,在函數(shù)名前加“(void)”的作用又是什么呢?
最明顯的一點就是表示程序并不關(guān)心調(diào)用該函數(shù)后的返回值是什么,比如函數(shù)strcpy,我們直接用“strcpy(des_str, src_str);”這樣的形式來調(diào)用?!?void)strcpy(des_str, src_str);”這樣的形式還真不多見!
原因是這種寫法不針對人,也不針對編譯器,而是針對靜態(tài)代碼檢測工具,它會把函數(shù)返回值作為一項檢測標(biāo)準(zhǔn)。在某些大公司,比較重視代碼規(guī)范,若在代碼靜態(tài)檢測時需要檢測該項。此時就需要用在被調(diào)用的函數(shù)(名)前加上“(void)”這種形式來告訴靜態(tài)代碼檢測工具程序并非沒有處理該函數(shù)的返回值,而是該處確實不需要處理它(該函數(shù)的返回值),不需要再對該處代碼作此項檢測。其實這和我們在代碼中使用“#pragma warning (disable: XXXX)”的道理是一樣的。
l例如: 統(tǒng)計整數(shù)里面各位 1 2 3 的個數(shù)
//***************************************************
#
include stdio.h
int c1, c2, c3;
void fun(long n)
{
c1 = c2 = c3 = 0;
while (n != 0)
{
switch (n % 10)
{ case 1:
c1++;
break;
case 2:
c2++;
break;
case 3:
c3++;
}
n /= 10;
}
}
int main()
{ long n;
scanf("%ld", n); //輸入整數(shù)n
fun(n); //調(diào)用自定義函數(shù)fun
printf("C1=%d C2=%d C3=%d\n", c1, c2, c3); //輸出
}
你在main函數(shù)中的這一行語句void equation(double a,double b,double c);是函數(shù)的聲明不是調(diào)用改為equation(a,b,c);就行了
文章標(biāo)題:c語言調(diào)用void子函數(shù),c語言void子函數(shù)怎么用
當(dāng)前URL:http://jinyejixie.com/article22/hsiijc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁設(shè)計公司、做網(wǎng)站、網(wǎng)站排名、微信小程序、外貿(mào)網(wǎng)站建設(shè)、面包屑導(dǎo)航
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)