⑴ c語言形式參數和實在參數
形參出現在函數定義中,在整個函數體內都可以使用,離開該函數則不能使用。實參出現在主調函數中,進入被調函數後,實參變數不能使用。
形參變數只有在被調用時才分配內存單元,在調用結束時,即刻釋放所分配的內存單元。而實參在主調函數中已分配內存單元。
實參可以是常量、變數、表達式、函數等,無論實參是何種類型的量,在進行函數調用時,都必須具有確定的值,以便把這些值傳送給形參。
實參和形參在數量上,類型上,順序上應嚴格一致,否則會發生類型不匹配」的錯誤。
函數調用中發生的數據傳送是單向的。即只能把實參的值傳送給形參,而不能把形參的值反向地傳送給實參。
⑵ 對於C語言,一個函數可以有多少個參數
內存角度來看,函數的參數是要入棧的,棧區大小決定了參數的個數。一般C語言程序運行時默認1M的棧空間,以int類型的參數來看,1M=1024KB=1024*1024位元組,32位系統中int類型佔4個位元組,所以理論上一個函數最多有262144個int類型的參數。實際中要遠遠小於這個數,因為應用程序中的局部變數都需要佔用棧空間。
⑶ c語言的函數參數中 &與*
&的意思是引用傳遞
*的意思是指針傳遞
都可以用來改變實參的值,相當於參數值可以返回。
但使用的環境不同,有些地方只能用&,而有的地方只能用*,因為具體情況太多,這里就不列舉了。
⑷ C語言中入口參數是什麼
以下以 C 語言為例,其餘語言與之有類似之處:
A function is uniquely represented by a name and a set of operand types.
Its operands, referred to as parameters, are specified in a
comma-separated list enclosed in parentheses. The actions that the
function performs are specified in a block, referred to as the function
body. Every function has an associated return type.
函數由函數名以及一組操作數類型唯一地表示。函數的操作數,也即形參,在一對圓括弧中聲明,形參與形參之間以逗號分隔。函數執行的運算在一個稱為函數體的塊語句中定義。每一個函數都有一個相關聯的返回類型。
As an example, we could write the following function to find the greatest common divisor of two ints:
考慮下面的例子,這個函數用來求出兩個 int 型數的最大公約數:
// return the greatest common divisor
int gcd(int v1, int v2)
{
while (v2) {
int temp = v2;
v2 = v1 % v2;
v1 = temp;
}
return v1;
}
Here
we define a function named gcd that returns an int and has two int
parameters. To call gcd, we must supply two int values and we get an int
in return.
這里,定義了一個名為 gcd 的函數,該函數返回一個 int 型值,並帶有兩個 int 型形參。調用 gcd 函數時,必須提供兩個 int 型值傳遞給函數,然後將得到一個 int 型的返回值。
————C++ Primer 4th Edition
可以將形參理解為入口參數,返回值理解為出口參數
話說,現在應該基本上不使用「入口參數」/「出口參數」這樣的說法了吧
⑸ C語言里的參數是什麼意思
分為形參和實參,實參就是主調函數中的參數,形參是被調函數的參數。運行時實參把替換掉形參。就實現把實參的值傳給形參。不懂翻書,很詳細。
⑹ C語言 參數跟變數有什麼區別
沒有什麼區別。函數的參數就和自己的局部變數一樣使用。
⑺ C語言命令行參數
int main(int argc, char * argv[])
{
.....
}
argc: 代表啟動程序時,命令行參數的個數。C和C++語言規定,可執行程序程序本身的文件名,也算是一個命令行參數,因此,argc的值至少是1.
argv[]:指針數組,其中的每個元素都是一個char* 類型的指針,該指針指向一個字元串,這個字元串里就存放著命令行參數。
例如,argv[0]指向的字元串就是第一個命令行參數,即可執行程序的文件名,argv[1]指向第二個命令行參數,argv[2]指向第三個命令行參數....。
#include <stdio.h>
int main( int argc, char * argv[])
{
int i;
for ( i = 0;i < argc; i++)
{
printf("%s ",argv[i]);
}
return 0;
}
windows下,將上面的程序編譯成sample.exe,然後在控制台窗口敲:
sample para1 para2 s.txt 5 "hello world"
上面有6個參數,雙引號為了包含空格作為一個參數。
輸出結果:
sample
para1
para2
s.txt
5
hello world
(7)c語言參數擴展閱讀:
main函數通常含有參數argc和argv,寫法通常如下:
int main(int argc,char *argv[])
int main(int argc,char **argv)
程序:
#include<stdio.h>
int main(int argc,char *argv[])
{
int i;
for(i=0;i<argc;i++)
printf("第 %d 個參數是 %s ",i+1,argv[i]);
return 0;
}
⑻ c語言參數帶void*
如果函數的參數不指定,(或者說可以是任意類型)的指針,則使用void *
如:void *func(void *var1) { }
void* 在ANSI與GNU中的表現也不一致。
ANSI中,void *p;
p++; p+=1; 都是不允許的,因為ANSI認為必須明確指針類型,才能進行運算。
而GNU中,則認為是合法的,默認規則是void*等同於char*
一般運用:
int *p; void *q;
*p = (int*)q;
(char *)q++;
(char*)q+=1;//這個就不一定正確了,要分編譯器。
⑼ c語言主函數中的參數有什麼用舉例說明
下面是兩年前對一網友的回答,供參考,希望有幫助。
main是C/C++的一重要函數,叫主函數。無論程序多復雜,代碼中必須有這么一個函數,也只能有一個這樣的函數;程序執行時就是從這個函數進入的。由於問得比較籠統,如果你想知道詳細情況的話,發給你一個網友的求助與本人的回答,自己看吧……
假定以下程序經編譯和連接後生成可執行文件PROG.EXE,如果在此可執行文件所在目錄的提示符下鍵入: PROG ABCDEFGH IJKL<回車>則輸出結果為:
void main(int argc,char *argv[]){
while(--argc>0)
printf("%s",argv[argc]);
printf("\n");
}
各句程序什麼意思?
輸出結果是什麼?
請幫忙解決,謝謝
回答求助:
這段代碼不長,但要說清楚你的要求還需要比較長的一段話。首先,說一下main(int argc,char *argv[])函數的兩個形參,第一個int argc,是記錄你輸入在命令行(你題目中說的操作就是命令行輸入)上的字元串個數;第二個*argv[]是個指針數組,存放輸入在命令行上的命令(字元串)。當命令行輸入PROG ABCDEFGH IJKL時,記錄了3個字元串(以間隔為界,不含間隔,這是約定),*argv[0]中放的是"PROG",*argv[1]中放的是"ABCDEFGH",*argv[2]中放的是"IJKL",這樣argc就是3了。while(--argc>0)是條件循環,argc>0時繼續;argc初值是3,前置--先減1為2,所以後面的輸出語句打出*argv[2]中的內容IJKL;再執行while(--argc>0),argc再減1為1,打出*argv[1]中的內容ABCDEFGH;再循環,argc減1為0,條件破壞,不再執行while(--argc>0)的循環體。所以最後顯示的是IJKLABCDEFGH。不知給你說清楚了沒有?希望有幫助。