❶ c語言裡面,什麼是有參函數,什麼是無參函數
無參函數,是指在主調函數調用被調函數時,主調函數不向被調函數傳遞數據。無參函數一般用來執行特定的功能,可以有返回值,也可以沒有返回值,但一般以沒有返回值居多。
有參函數,是指在主調函數調用被調函數時,主調函數通過參數向被調函數傳遞數據。在一般情況下,有參函數在執行被調函數時會得到一個值並返回給主調函數使用。
(1)c語言函數沒有參數名擴展閱讀
1、定義有參函數的一般形式為:
函數類型 函數名(參數類型1 參數名1, 參數類型2 參數名2, …, 參數類型n 參數名n)
{
聲明部分
語句部分
}
2、有參函數使用注意事項:
(1)在定義函數時,必須要指定形參的類型。實參與形參的個數必須相等,若不相等就是語法錯誤。此外,實參與形參的類型要相同或賦值兼容。最好是相同,這樣不容易出錯。如果不相同則實參按形參的類型轉化,然後再送給形參。
(2)在傳遞數據時,實參與形參是按順序一一對應的。
❷ c語言中,沒有參數的函數,它的參數列表是不是可以寫void也可以不寫,
寫不寫對程序運行沒有任何差異。
但是從可維護角度上說,寫上void可以明確的表明該函數沒有參數。
❸ c語言函數可以沒有參數嗎
好問題。
c語言中的函數和數學中的函數不一樣。
沒有參數的函數,有些用了全局變數,所以還是有參數的,意義就在於分解代碼,做成一個函數都要取個名字,從函數就可以知道一段代碼的主要功能了。
❹ c函數形參如果沒有名字,只有類型,在下面使用的時候,怎麼使用
定義的時候確實可以不寫形參名字。
你如果學了編譯原理的話可以知道函數間是如何傳參的(大多語言是通過棧),
c語言是第n個參數先壓棧,再壓第n-1個,。。。再壓第一個。最後修改棧頂指針add esp,8。
當進入函數時都是
push ebp
mov ebp,esp
所以可以這么實現
//VS2010環境
void f(int,int)
{
int a,b;
__asm //這是嵌入匯編關鍵字,在VC6.0嵌入匯編好像是asm
{
mov eax,[ebp+8]
mov a,eax ;第一個參數
mov eax,[ebp+12]
mov b,eax ;第二個參數
}
printf("%d\t%d\n",a,b);
}
void main()
{
f(7,3);
}
❺ C++中怎樣可以定義沒有參數的函數!
C++中定義沒有參數的函數有兩種方法。
方法1(空括弧法):
返回值類型 函數名()
{
函數體;
}
例如:
intgetarand()
{
returnrand()%10;//產生一個0-9之間的隨機數
}
方法2(強調法):
返回值類型 函數名(void)
{
函數體;
}
intgetarand(void)
{
returnrand()%10;//產生一個0-9之間的隨機數
}
❻ C語言中 函數沒有輸入參數 怎麼理解
函數定義時在函數名後的圓括弧的參數叫「形式參數」,簡稱「形參」;調用該函數時在函數名後的圓括弧內的參數叫「實際參數」,簡稱「實參」。
int
Add(
int
num1
,
int
num2)
/*
num1和num2為形參
*/
{
return
num1
+
num2;
}
void
main()
{
int
a,
b,
value
a
=
1;
b
=
3;
value
=
Add
(a,
b);
/*
a和b為實參
*/
printf("%d
+
%d
=
%d\n",
a,
b,
value);
}
在C語言中,所謂的「輸入參數」就是指形參;當形參使用引用傳遞時,輸入參數也可以當作輸出參數。
GetNumber()沒有形參,也就沒有輸入參數。至於該函數體內部的變數c及輸入語句,只能算是該函數的局部變數及賦值語句而已。簡單來說,函數有沒有輸入參數,只要看函數名的圓括弧內是否有參數即可。
❼ C語言中函數沒有參數和沒有返回值有什麼不一樣,它們的類型名都是void嗎,望詳答,本人菜鳥一名
沒有參數,表示本函數運算不需要參數,但不代表沒有返回值,類型名也不一定是void要根據返回值確定。沒有返回值是執行函數後不需要返回什麼確定的值,一般不要這樣寫。
❽ c語言 函數裡面可以沒有參數嗎
當然可以,int
main()這個主函數通常情況下就是沒有參數的。
❾ 為什麼有些函數聲明時沒有參數
你指的是C語言中的函數聲明時沒有參數名嗎?
函數聲明可以只有參數類型而沒有參數名,參數名和定義時的參數名不同也是允許的。因為C編譯器在編譯時忽略參數名,只檢查函數的參數的類型和順序是否與調用的函數匹配。
❿ c語言聲明函數時如果不寫參數名只寫參數類型,在子函數中怎麼引用這
和寫參數名的情況是一樣的。 調用時按照參數列表類型,傳入對應個數 類型匹配的實參就行。
聲明的時候,可以省略形參的參數名,而只保留類型。
即 聲明int fun(int , int);
和聲明 int fun(int a, int b);
效果是完全一樣的 。 調用的時候 都是傳入兩個整型參數即可。