1. 簡單c語言函數調用無返回值問題
遞歸函數myPower的定義有邏輯錯誤,改成:
double myPower(int a,int b)
{
if(0==b) return 1;
return a*myPower(a,b-1);
}
如果改成這樣,會更高效:
double myPower(int a,int b)
{
if(0==b) return 1;
if(1==b) return a;
return myPower(a,b%2)*myPower(a*a,b/2);
}
例子1
#include <stdio.h>
double myPower(int a,int b)
{
if(0==b) return 1;
return a*myPower(a,b-1);
}
int main()
{
int a=2,b;
for(b=0;b<11;b++)
printf("%lf ",myPower(a,b));
return 0;
}
2. C語言一般在什麼情況下不需要返回值
所有的函數,除了空值類型外,都返回一個數值(切記,空值是ANSI建議標准所做的擴展,也許並不適合讀者手頭的C編譯程序)。該數值由返回語句確定。無返回語句時,返回值是0。這就意味著,只要函數沒有被說明為空值,它就可以用在任何有效的C語言表達式中作
為操作數。這樣下面的表達式都是合法的C語言表達式。
x
=
power
(y);
if
(max
(x,y)
>100)
printf("greater;")
for
(ch=getchar(
);
isdigit
(ch);)
.
.
.
;
可是,函數不能作為賦值對象,下列語句是錯誤的:
s
w
a
p
(
x
,y)
=100;
C編譯程序將認為這個語句是錯誤的,而且對含有這種錯誤語句的程序不予編譯。
所有非空值的函數都會返回一個值。我們編寫的程序中大部分函數屬於三種類型。第一種類型是簡單計算型—函數設計成對變數進行運算,並且返回計算值。計算型函數實際上是一個「純」函數,例如sqr(
)和sin(
)。第二類函數處理信息,並且返回一個值,僅以此表示
處理的成功或失敗。例如write(
),用於向磁碟文件寫信息。如果寫操作成功了,
write(
)返回寫入的位元組數,當函數返回-
1時,標志寫操作失敗。最後一類函數沒有明確的返回值。實際上這類函數是嚴格的過程型函數,不產生值。如果讀者用的是符合A
N
S
I建議標準的C編譯程序,那麼所有這一類函數應當被說明為空值類型。奇怪的是,那些並不產生令人感興趣的結果的函數卻無論如何也要返回某些東西。例如printf(
)返回被寫字元的個數。然而,很難找出一個真正檢查這個返回值的程序。因此,雖然除了空值函數以外的所有函數都返回一個值,我們卻不必非得去使用這個返回值。有關函數返回值的一個常見問題是:既然這個值是被返回的,我是不是必須把它賦給某個變數?回答是:不必。如果沒有用它賦值,那它就被丟棄了。
3. C語言中函數必須有返回值嗎沒有無法使用對嗎
不是必須有返回值。如果沒有返回值類型名為"void"。
void函數的定義:
void+函數名()//無類型+函數名
{//程序代碼}
如果沒有返回值類型名為"void", 整數類型int 類型返回值為整數類型int,以此類推??
類型名有:void int long float int* long* float* ??
(3)c語言程序不返回擴展閱讀:
需要說明的是:
1、一個C語言源程序可以由一個或多個源文件組成。
2、每個源文件可由一個或多個函數組成。
3、一個源程序不論由多少個文件組成,都有一個且只能有一個main函數,即主函數。是整個程序的入口。
4、源程序中可以有預處理命令(包括include 命令,ifdef、ifndef命令、define命令),預處理命令通常應放在源文件或源程序的最前面。
5、每一個說明,每一個語句都必須以分號結尾。但預處理命令,函數頭和花括弧「}」之後不能加分號。(結構體、聯合體、枚舉型的聲明的「}」後要加「 ;」。)
6、標識符,關鍵字之間必須至少加一個空格以示間隔。若已有明顯的間隔符,也可不再加空格來間隔。
網路-函數
4. C語言中那個函數無返回值到底是怎麼一回事
返回值是函數的計算結果,比如用函數計算1+1返回值就是2;
另外返回值並不一定的我們想要的結果,比如1+1如果返回3了,那就是函數代碼有錯誤。
5. c語言沒有返回值什麼意思,通俗說.
很正常啊,沒有返回值,就是不需要返回值。
比如:定義一個函數,在函數中列印信息到屏幕上。
voiddisplayMessage(char*msg){
#ifdefNEED_DEBUG
printf("%s ",msg);
#endif
}
很顯然,調用這個函數,我不需要知道信息是不是已經列印到屏幕上了。(只有調試程序,才需要顯示信息)
有很多類似的場景,比如:某個程序,根據給定的參數,在屏幕上繪制完成一個圖像,而調用者不關心圖像是不是繪得正確,因為正確與否不影響程序的繼續執行。
6. c語言沒有返回值什麼意思,通俗說.
摘要 您好,沒有返回值,就是不需要返回值的意思。
7. 在C語言中,主函數是不是必須要有返回值
在C語言中,主函數必須要有返回值。
main 函數的返回值類型必須是 int ,這樣返回值才能傳遞給程序的激活者(如操作系統)。如果 main 函數的最後沒有寫 return 語句的話,C99 規定編譯器要自動在生成的目標文件中(如 exe 文件)加入return 0; ,表示程序正常退出。
在C語言標准中強制要求main函數的返回值類型為int,main函數的返回值是傳遞給操作系統,讓操作系統判斷程序的執行情況(是正常結束還是出現異常)。
(7)c語言程序不返回擴展閱讀:
在C和C++中,不接收任何參數也不返回任何信息的函數原型為「void foo(void);」。正是因為這個,所以很多人都誤認為如果不需要程序返回值時可以把main函數定義成void main(void) 或void main()。然而這是錯誤的。
main函數的返回值應該定義為int類型,雖然在一些編譯器中,void main可以通過編譯(如vc6),但並非所有編譯器都支持void main,因為標准中從來沒有定義過void main。g++3.2、dev C等環境中如果main函數的返回值不是int類型,根本無法通過編譯。而gcc3.2則會發出警告。
8. C語言程序中,若函數無返回值,則應該對函數說明的類型是()A、int B、double C、char D、void
C語言程序中,若函數無返回值,則應該對函數說明的類型是void。
如果函數所體現的計算不需要返回結果,則數據類型可以指定為void類型。
注意,這種情況下在主調函數中調用該函數,該函數調用表達式不能被用作子表達式給其他變數賦值。
void的字面意思是「無類型」,void *則為「無類型指針」,void *可以指向任何類型的數據。
(8)c語言程序不返回擴展閱讀
使用void類型指針要注意的幾條規則:
1、void*類型只有地址信息沒有類型信息,所以不能計算偏移。
C/C++中的指針通常來說有兩個屬性:
(1)指向變數
(2)指向對象的地址和長度
指針其實就是存儲被指向變數的地址,並不保存其長度;而且存的這個地址僅是變數的首地址,並不是該變數占據內存的所有地址空間。
2、任何指針(包括函數指針)都可以賦值給void指針。
特點:
(1)不需要類型轉換;
(2)只獲得變數/對象地址而不獲得大小。
3、void指針賦值給其他類型的指針時都要進行轉換。
特點:轉換類型也就是獲得指向變數/對象大小。
4、void指針在強制轉換成具體類型前,不能解引用。
原因:void指針只知道指向變數/對象的起始地址,而不知道指向變數/對象的大小(占幾個位元組)所以無法正確引用。
5、void指針不能參與指針運算,除非進行轉換。
9. c語言裡面的無返回值到底是怎麼回事,謝謝了,大神幫忙啊
無返回值就是函數只執行數據處理,不返回值。函數定義時一般用void關鍵字表示無返回值。
如調用string類庫中的int
i
=
strcmp("abc",
"abc")函數判斷兩個參數是不是相等,兩個都"abc"
則i
=
0,這是有返回值的
10. C語言運行框輸入完兩行回車不返回結果
將i=i++修改為i++,讓i值自增。
題主代碼中i = i++有問題,i值不會自增,循環不會結束。會先使用i值,即將1賦值給i,所以在while循環中i的值會一直是1,循環無法停止,所以回車後不會結束。