1樓:網友
利用指標,利用全域性變數的話會提高耦合度,破壞模組化,得不償失#include
void x(int *p2i)
int main()
2樓:匿名使用者
將i設定成全域性變數static型別的就可以了。
c語言如何在子函式中改變主函式陣列值?
3樓:網友
兩種方法bai.
一:把a作為引數。
du傳遞給zhisss();
int sss(int x)
這樣僅僅只是使用daoa的值,是把a的值複製給x,使x的值等於內a,可以在子函式容中使用a的數值,但無法改變主函式中a的值。
二,使用指標。宣告乙個指標指向a,把a的位址作為引數傳遞給子函式,那麼在子函式中不但可以使用a的值還可以修改主函式中a的值。
4樓:千年老妖
變數有全域性變數和區域性變數之分,要想子函式改變母函式的變數值有回兩種辦法:答。
1是將變數定義成全域性變數(在#include下面就定義),然後在子函式中直接使用變數名。
2是將指向該變數的指標當作引數傳遞給子函式。
5樓:網友
你的程式恐怕連編譯都不能通過吧,有語法錯誤。
6樓:心聲代
你那個h好像始終是0吧。
c語言中main函式中的函式怎麼呼叫函式?
7樓:網友
是屬於函式的巢狀嗎?如果是,就直接在寫外函式b時按照在主函式里呼叫外函式的形式呼叫a就行了啊。
8樓:
c語言 函式里面是不能定義函式的,何來main函式中的函式?
大括號是代表模組,不能寫在函式名後面的。)
9樓:
不太明白你什麼意思,呼叫函式通過函式名呼叫,或都可以通過函式指標呼叫int fun1()
int (*pfun)()
main()
10樓:網友
函式b :
函式a的返回值作為函式b的引數。
11樓:文正
假如有一函式f, 沒有引數, 則要這樣呼叫:
f();其中, f是函式f的函式名, 但對於編譯器來講, f是乙個位址, 它指向了f函式**段的開頭部分。而()是乙個運算子, 它非常類似於*, 但是*是取值的, 而()是讓程式跳轉到f處執行程式。 最後的那個分號就是標識著乙個語句的結束。
如果f有乙個整型的引數, 那麼需要這樣呼叫:
f(1);只是多了乙個1, 這個1就是()運算子要複製到f函式的棧中了, 準確地說是複製到它的形參中。
如果f有多個引數, 則只需要在每個形參之間打上逗號:
f(1, 2, 3);
逗號只是用來起分隔作用。
12樓:禮儀常識
就這樣呼叫啊,這叫巢狀呼叫。
如:int max(){
void sort(){
int main()
c語言中主函式中定義的變數,呼叫函式里還需要再定義嗎?
13樓:藤原子大雄
在程式設計中,時時刻刻都用到變數的定義和變數的宣告,可有些時候我們對這個概念不是很清楚,知道它是怎麼用,但卻不知是怎麼一會事,下面我就簡單的把他們的區別介紹如下:
變數的宣告有兩種情況:
1) 一種是需要建立儲存空間的(定義、宣告)。例如:int a在宣告的時候就已經建立了儲存空間。
2) 另一種是不需要建立儲存空間的(宣告)。例如:extern int a其中變數a是在別的檔案中定義的。
前者是"定義性宣告(defining declaration)"或者稱為"定義(definition)",而後者是"引用性宣告(referncing declaration)"。從廣義的角度來講宣告中包含著定義,但是並非所有的宣告都是定義,例如:int a它既是宣告,同時又是定義。
然而對於extern a來講它只是宣告不是定義。一般的情況下我們常常這樣敘述,把建立空間的宣告稱之為"定義",而把不需要建立儲存空間稱之為"宣告"。很明顯我們在這裡指的宣告是範圍比較窄的,也就是說非定義性質的宣告。
例如:在主函式中。
int main()
int a; //是定義,定義了a為整型的外部變數(全域性變數)
外部變數(全域性變數)的"定義"與外部變數的"宣告"是不相同的,外部變數的定義只能有一次, 它的位置是在所有函式之外,而同乙個檔案中的外部變數宣告可以是多次的,它可以在函式之內(哪個函式要用就在那個函式中宣告)也可以在函式之外(在外部變 量的定義點之前)。系統會根據外部變數的定義(而不是根據外部變數的宣告)分配儲存空間的。對於外部變數來講,初始化只能是在"定義"中進行,而不是在" 宣告"中。
所謂的"宣告",其作用,是宣告該變數是乙個已在後面定義過的外部變數,僅僅是在為了"提前"引用該變數而作的"宣告"而已。extern只作 宣告,不作定義。
用static來宣告乙個變數的作用有二:
1) 對於區域性變數用static宣告,則是為該變數分配的空間在整個程式的執行期內都始終存在。
2) 外部變數用static來宣告,則該變數的作用只限於本檔案模組。
14樓:網友
不大明抄白你的意思!!
在函式襲中定義的變數,其作用域只是在該函式里,其他函式想使用這個變數,需要通過其他方式,不能直接使用變數名字來訪問這個變數。
作用域規定的是名字的適用範圍。 在函式中定義的變數,他的名字的使用範圍僅僅只是這個函式。
所以其他函式中可以定義與這個函式相同名字的變數。
名字雖相同,但所指不同。
15樓:倒黴熊
主函式中定義的變數只能在主函式中使用 如果別的函式想使用 就需要自己定義。
16樓:網友
你是想在函式里使用主函式的變數嗎?函式具有區域性性,如果需要使用變數的話得在函式區再定義,與主函式獨立;如果想在函式里修改主函式值可以使用引用&,或把主函式變數定義在標頭檔案下,形成全域性變數就可以了。
17樓:晨曦月殤
c語言中主函式中定bai義的變du量只能在主函式中使用,zhi所以你還得再定dao
義乙個變數。版。
當然權,捏可以把主函式中定義的這個變數傳遞給被呼叫的函式作為引數。
例如void fun(int x)
main()
但是如果你要在被呼叫函式中使用這個變數例如fun()
像這樣,就是錯的,編譯器會報錯,main中定義的變數是區域性變數,只能在main中使用。
你可以在main外部定義乙個變數,這樣在被呼叫函式中也就可以使用了。
18樓:實小林志堅
沒有特別原因的話,就不需要再定義,注意初值處理。
19樓:網友
要的,還可以強制型別的轉換,比如max(int x,int z)
c語言中自定義函式能否放在main函式後面
20樓:網友
可以放在main()函式後復面,需要制在mian()函式前面做個函式申明。
在乙個原始檔中定義函式且在另乙個檔案中呼叫函式時,函式宣告是必需的。在這種情況下,應該在呼叫函式的檔案頂部宣告函式。如:
#include
函式宣告 */
int max(int num1, int num2);
int main ()
函式宣告會告訴編譯器函式名稱及如何呼叫函式。函式的實際主體可以單獨定義。
函式宣告包括以下幾個部分:
return_type function_name( parameter list );
21樓:網友
c語言中自定義函式du可以放在main函式後面,但需zhi要在前面進行函式dao定義。版。
c語言的函式定義的。
權作用域,只限於後面的函式可見。
在main函式中用到的其它函式,一種方法是在main函式的前面定義並實現函式,如。
定義並實現foo函式。
void foo(int *a)
int main(void)
另外一種方法是在main函式後實現函式,但需要在之前定義,如void foo(int *a);//僅宣告foo函式,與函式實現的引數和名稱及返回值相同。
int main(void)
實現foo函式。
void foo(int *a)
c語言函式呼叫例子,c語言中函式呼叫有三種方法,能幫忙各舉個例子嗎
include int main void printstar void print message 比如,你有bai一個函式du 整數划來分問題自,有點難理解 include main int q int n,int m c語言中呼叫函式的方 復法及步驟 1 首先制需要輸入想要呼叫的函式。2 然後...
c語言怎麼呼叫庫函式求函式值,c語言中不用庫函式怎麼求冪指數
c cos 3.5678 就是呼叫庫函式。include之後,與使用你自己定義的函式的方法一樣,直接用。f 不指定寬度,整數部分全部輸出並輸出6位小數。m.nf 輸出共佔m列,其中有n位小數,如數值寬度小於m左端補空格。m.nf 輸出共佔m列,其中有n位小數,如數值寬度小於m右端補空格。c語言中不用...
C語言構造體的呼叫函式程式,請高手修改,真誠請你貼上能成功執行的程式
根據你對add函式的定義,main函式的int a,b,c add a,b,c 這兩行是不對的。另外你沒有對b和c初始化,這樣的計算也沒有意義,因為這樣的自動變數值是隨機的。可以改成以下這個樣子。include struct well typedef struct well well int add...