1樓:郝在益
首先我們來說一下,你這個程式是有很大的問題的。函式有且只有唯一一個返回值,當程式執行到return的時候,這個函式就結束並返回了。所以,你這裡寫2個return來返回最大值和最小值是不可能的。
再者,如果你想使用返回值作為最大值,最小值的傳遞,那麼在main函式中,你呼叫star函式的時候需要一個變數來接受這個函式的返回值,你這裡沒有用變數來接受,這是第二個錯誤。
第三個錯誤,你這個star函式有2個值需要傳給main函式,所以你這裡使用返回值來傳遞引數是不可能實現的,所以就只能使用指標或者全域性變數來做了。看你的程式,你是想使用指標做的,既然使用指標做,就需要在star函式的引數中使用指標型別資料。
下面是我基於你的程式幫你改的,你可以看看。
#include
void star(int* max,int* min)else}}
int main()
2樓:匿名使用者
#include
void star(int *max,int *min,int n)else}}
int main()
3樓:匿名使用者
改下引數申明
c語言中函式的呼叫
4樓:逃離
int anjian(int i)
m=anjian(n )%3; \如果當p2.0管腳有低電平時,請問m能得到值麼?
這句寫在函式中,例如main()或其他子函式中。
如果再anjian()中,n的值在anjian()呼叫前賦給,或在前宣告其值!
5樓:鳳凰舞者論
如果說,寫函式的話,沒問題的。比如
int anjian(int i)
如果是呼叫函式的話,需要先定義,後呼叫的。
6樓:小精靈加油
那句m=anjian(n )%3;好像是用在主函式中的,函式呼叫
7樓:前慶
初略看了下 好像沒問題
c語言中函式能呼叫函式嗎
8樓:來自天鵝洞尊敬的薔薇
你說的是函式巢狀吧?可以的 只是你這個函式a()應該後面沒有分號的!
9樓:匿名使用者
這很明顯是可以的,你想想,主函式也是一個函式對不對,可是裡面又呼叫有printf() scanf()函式,所以,學習語言是要很靈活的,畢竟你不可能只靠一種語言。
補充下:呼叫可以巢狀,但是定義不可以。
10樓:匿名使用者
可以呼叫的
但是你呼叫前,最好宣告一下
這樣隨便怎麼排序都不會出錯
ex:a();
b();
main()
a();
b()養成良好的**習慣
對你以後的大工程變成很有幫助
希望我的回答對你有所幫助哈
11樓:匿名使用者
#include
int feven(int x);
int fodd(int x);
int feven(int x)
void main()
遞迴問題 就是函式呼叫函式
12樓:匿名使用者
可以的自己呼叫自己也是允許的
13樓:沒有響應
當然可以 自己呼叫自己都可以
a(){
a()}
這樣都可以
14樓:匿名使用者
c語言提供將不同型別資料組合在一起構成新資料型別的功能,結構體就是其中一致型別,如:
struct newtype
;函式呼叫,就是使用函式了。首先需要理解什麼是函式?
c語言為了程式設計方便起見,向程式設計師提供將程式進一步分解,並將程式**中相同功能模組**組合在一起的功能,這個功能模組就是函式。它也是c語言封裝的一種最重要形式,它提供了良好的**重用方法。
這樣程式在某一位置要使用該函式的功能就可以呼叫該函式。
關於c語言中陣列作為函式引數的函式之間呼叫問題
15樓:肥仙女
1、新建一個陣列作為引數專案,如圖所示:
2、新增一個array.c檔案,如圖所示:
3、包含stdio.h和stdlib.h標頭檔案,如圖所示:
4、輸入main函式主體及返回值,如圖所示:
5、定義一個陣列arr,如圖所示:
6、定義一個function函式,如圖所示:
7、將陣列作為引數傳遞給function函式,如圖所示:
8、執行程式,輸出結果,如圖所示:
16樓:董音廣子珍
這問題說明你對指標的運用還是不熟練的,既然是陣列,作為函式引數傳遞的是陣列首地址.
#include
#include
void
func1(int
*array,
intsize)
}//陣列array_b根據陣列array_a的元素乘以項數獲得元素值
void
func2(int
*array_a,int
*array_b,
intsize)
//輸出陣列元素
void
print(int
*array,
intsize)
intmain(void)
17樓:匿名使用者
函式在陣列中的呼叫是以陣列名為實參呼叫的,因為陣列名就是陣列的首地址,所以說對陣列的呼叫是不需要返回值的,主調函式裡面的陣列值會隨被調函式的形引數組改變而改變,當然這些都是在你以陣列名作為實參的前提下
18樓:駭客之劍
如果傳遞值是指標(地址),也就是陣列名,雖然在子函式裡面,但複製過去的是地址,所以可以對地址裡面指向的內容進行操作,也就是一個子函式中可以實現對多個值的操作,如果傳遞的是內容,則至多通過return 進行一個返回值操作,總之,要看你傳什麼
19樓:匿名使用者
nt *&pvec是c++中的指向int型別指標的引用,就是pvec本身是對函式呼叫時實參的一個引用,而這個實參的型別是一個指向整形的指標型別,之所以使用引用,是因為要在函式中修改這個指標的內容。(如果只需要修改指標指向的記憶體單元的內容,只需要用指標型別作為形參就可以)
int &size 中size同樣是一個引用,是指向int型別的一個引用,目的同樣是修改引用的實參的值。
fstream在c++中是一個檔案流型別,可以讀取也可以寫入,fstream&可以傳入一個fstream型別的物件,在函式中的目的同樣是修改原有實參的內容,引用不會對實參進行拷貝。
c語言中,函式呼叫的問題!
20樓:潭嘉納弓綺
如果一個函式要使用引數,它就必須定義接受引數值的變數。
形式引數與實際引數
函式定義時填入的引數我們稱之為形式引數,簡稱形參,它們同函式內部的區域性變數作用相同。形參的定義是在函式名之後和函式開始的花括號之前。
呼叫時填入的引數,我們稱之為實際引數,簡稱實參。
必須確認所定義的形參與呼叫函式的實際引數型別一致,同時還要保證在呼叫時形參與實參的個數出現的次序也要一一對應。如果不一致,將產生意料不到的結果。與許多其它高階語言不同,(是健壯的,它總要做一些甚至你不希望的事情,幾乎沒有執行時錯誤檢查,完
全沒有範圍檢測。作為程式設計師,必須小心行事以保證不發生錯誤,安全執行。
賦值呼叫與引用呼叫
一般說來,有兩種方法可以把引數傳遞給函式。第一種叫做「賦值呼叫」(call
byvalue),這種方法是把引數的值複製到函式的形式引數中。這樣,函式中的形式引數的任何變化不會影響到呼叫時所使用的變數。
把引數傳遞給函式的第二種方法是「引用呼叫」(call
byreference)。這種方法是把引數的地址複製給形式引數,在函式中,這個地址用來訪問呼叫中所使用的實際引數。這意味著,形式引數的變化會影響呼叫時所使用的那個變數
有關於c語言中函式呼叫問題
21樓:幻形術
遞迴呼叫不理解?
上次呼叫還沒結束啊,結束的只是本次呼叫
c語言中函式宣告問題
22樓:
第一,如果你沒有看錯就是你的書錯了,只有int和char型別的函式不必宣告
第二,c中可以不宣告函式的條件是3個
1就是上面我說的
2.是被調函式定義在主調函式之前,可不必宣告3函式的外部已宣告過了,個個主調函式中不必宣告對於第二點,很好解釋,因為宣告的目的在於告訴編譯器有這麼個自定義函式,返回型別是什麼,如果被調函式定義在主調函式之前,那麼編譯器自然就知道了這個函式
你把f2和f1換下位置並去掉宣告就明白了
再說一句,寫函式宣告是編寫程式的良好習慣
請注意這是c程式,c官方宣告標準編譯器是turboc 2。0不要把c++的概念強加給c
我不是說vc++6不好,而是說既然是在學c,就要用標準的c編譯器,只有標準c編譯器才能正確的學習c的基礎理論
23樓:程憐少三姍
可能和編譯器有關,我用vc++6.0這段**沒有問題.可以直接編譯執行.
24樓:撒荌言曉曼
這種編碼風格是確實存在的,是在正式標準c89出現前,甚至是k&rc(這裡特指第二版的,第一版的沒看過)正式出現前就有的風格,現在基本是不用這樣的風格了
不過gcc到底是gcc,這種"洪荒時代"的**風格都可以查了一下,the
cprogramming
language
第二版裡有提到過,中文版
第二版.新版p19
25樓:
這同你的編譯器有關。
我用 ms vc++ 編譯器, 用 cl 命令編譯連結, 把你的**去掉long f2(int), 編譯後執行正確無誤。
你可以把
f1(int p)
和f2(int q)
次序對調一下,這時省去原型宣告long f2(int),也許就可以了。
因為f1要用到f2,先宣告f2,後宣告f1. 你的編譯器較笨。書上是對的。
26樓:同進退
用visual c++6.0很好的!
c語言中函式呼叫與返回值的關係是什麼?
27樓:手機使用者
所謂函式返回值是一個函式在運算結束以後向呼叫它的母函式或者系統反饋一個回值答,這個值可以是各種變數型別.
舉個簡單的例子:
int add(int a,int b)
int main()
在主函式main中呼叫子函式add,並傳遞引數3和4過去,add經過運算後得到值7,通過return語句將得到的值返回給呼叫它的main函式供其使用,而在main中,返回值被用於給res賦值。
函式返回值就可以理解為解決一個問題以後得到的結論,把這個結論交給別人,就像寫在書上成為一個定理,來讓別人使用。
c語言中函式呼叫的問題。
28樓:
void printstar();
void print_message();
上面的叫宣告,下面的叫定義,其本質都是同一個函式void printstar()
void print_message()
你理解的書上的「說明」應該是函式定義部分,如果在宣告的時候同時把函式體給出來應該就是書上的「說明」了。
宣告和定義分開的方式讓程式可讀性增強,結構更清晰一些。
29樓:匿名使用者
void print_message();
void printstar()
與位置無關,,僅僅是呼叫函式,只要事先申明過,符合條件,都能被呼叫,,
30樓:是小白啊
void printstar()
以上叫做函式的定義而void printstar();叫做函式的宣告,在c語言中函式定義的位置沒有要求,只要在呼叫函式的位置之前有函式的宣告即可。同樣如果函式的定義本身就在其被呼叫之前,那麼就不需要再寫函式的宣告
c語言中用於交換值函式問題,C語言中呼叫函式交換兩個變數的值需要傳遞地址,為什麼相加就可以直接用
因為void gsd int a,int b 中的a和b在呼叫時用實參的值進行拷貝,在函式中交換的只是拷貝過來的副本,所以原來的實參值並沒有發生交換操作。而在void gsd int a,int b 中int 型別使a和b的性質發生了變數,它們是 引用變數 呼叫時它們就成了實參的 別名 就是說在函式...
C語言return函式的用法,c語言中的函式的return使用
這條語句一般情況下加在主函式的最後,表示程式執行正常,則返回一個整數值0。其實在windows下一般沒有這個要求,除非是一個程式呼叫另外一個程式,或者在unix和linux下系統會要求一個程式返回一個整數值。告訴你,return意思就是結束函式並返回值函式有兩種 一種是不返回值的,而另外一種則是返回...
c語言中public 函式使用,c語言中public 是什麼意思啊?
c 中是有public的函式,可以在外面進行呼叫的。c語言中public 是什麼意思啊?public 定義一個全域性變數。全域性變數是程式設計術語中的一種,源自於變數之分。變數分為區域性與全域性,區域性變數又可稱之為內部變數。由某物件或某個函式所建立的變數通常都是區域性變數,只能被內部引用,而無法被...