當前位置:首頁 » 編程語言 » c語言中各種函數的參數
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

c語言中各種函數的參數

發布時間: 2023-04-10 12:14:39

『壹』 c語言中的標准函數有哪些

C語言輸入輸出函數有很多,標准I/O函數中包含了如下幾個常用的函數:
scanf,printf,getc,putc,getchar,putchar,gets,puts,fgets,fputs,fgetc,fputc,fscanf,fprintf等.
int
getc(FILE
*fp)
getc主要是從文件中讀出一個字元.常用的判斷文件是否讀取結束的語句為
(ch
=
getc(fp))
!=
EOF.EOF為文件結束標志,定義在stdio.h中,就像EXIT_SUCCESS,EXIT_FAILURE定義在stdlib.h中一樣,文件也可以被理解為一種流,所以當fp為stdin時,getc(stdin)就等同於getchar()了.
int
putc(int
ch,FILE
*fp)
putc主要是把字元ch寫到文件fp中去.如果fp為stdout,則putc就等同於putchar()了.
int
getchar(void)
getchar主要是從標准輸入流讀取一個字元.默認的標准輸入流即stdio.h中定義的stdin.但是從輸入流中讀取字元時又涉及到緩沖的問題,所以並不是在屏幕中敲上一個字元程序就會運行,一般是通過在屏幕上敲上回車鍵,然後將回車前的字元串放在緩沖區中,getchar就是在緩沖區中一個一個的讀字元.當然也可以在while循環中指定終止字元,如下面的語句:while
((c
=
getchar())
!=
'#')這是以#來結束的.
int
putchar(int
ch)
putchar(ch)主要是把字元ch寫到標准流stdout中去.
char
*
gets(char
*str)
gets主要是從標准輸入流讀取字元串並回顯,讀到換行符時退出,並會將換行符省去.
int
puts(char
*str)
puts主要是把字元串str寫到標准流stdout中去,並會在輸出到最後時添加一個換行符.
char
*fgets(char
*str,
int
num,
FILE
*fp)
str是存放讀入的字元數組指針,num是最大允許的讀入字元數,fp是文件指針.fgets的功能是讀一行字元,該行的字元數不大於num-1.因為fgets函數會在末尾加上一個空字元以構成一個字元串.另外fgets在讀取到換行符後不會將其省略.
int
fputs(char
*str,
file
*fp)
fputs將str寫入fp.fputs與puts的不同之處是fputs在列印時並不添加換行符.
int
fgetc(FILE
*fp)
fgetc從fp的當前位置讀取一個字元.
int
fputc(int
ch,
file
*fp)
fputc是將ch寫入fp當前指定位置.
int
fscanf(FILE
*fp,
char
*format,
輸入列表)
fscanf按照指定格式從文件中出讀出數據,並賦值到參數列表中.
int
fprintf(FILE
*fp,
char
*format,
輸出列表)
fprintf將格式化數據寫入流式文件中.
數據塊讀寫函數
fread
(buffer,size,count,fp);
fwrite(buffer,size,count,fp);
參數說明:
buffer:是一個指針。
對fread
來說,它是讀入數據的存放地址。
對fwrite來說,是要輸出數據的地址(均指起始地址)。
size:
要讀寫的位元組數。
count:
要進行讀寫多少個size位元組的數據項。
fp:
文件型指針。

『貳』 c語言函數中的參數

在 C++ 里,這樣的參數,只能獲取指針作為實際參數,並且讓形式參數 引用 實際參數(被引用的通常是另一個變數)。
例如:Stack *pL = new Stack(); out(pL); // 對的
而不能獲取「地址常量」;
例如:Stack L; out(&L); // 錯的

在 C 里,沒有 「引用」 符號,象 double Out(Stack *&L), 不能通過編譯。

『叄』 C語言中參數類型問題

C語言中:函數的形參中:如果形參在函數調用前必須確定其值,稱這樣的形參為函數的入口參數,如果形參的值在函數調用結束後才能被確定,稱這樣的形參為函數的出口參數(例如指針形參所指向的變數的值在函數調用結束後才能被確定)
如本例:函數function()中第一個形參就是入口參數,第二個參數就是出口參數,為了讓其他人更容易看懂程序,所以參數中用IN和OUT表示,更通俗易懂,IN LPSTR和OUT LPVOID是一種類型,至於是什麼類型,有可能是宏定義還有可能是別名還有可能是結構體,這里代碼太少

『肆』 C語言函數參數

匯編代碼gcc:


第一個問題的匯編:

movl	$0,%ebx
incl %ebx
incl %ebx
incl %ebx
movl %ebx,8(%esp)
movl %ebx,4(%esp)
movl %ebx,(%esp)
call _func

匯編顯示,先將n自增了3次變為3,然兄液後調用函數,因此都是歲銷3


第二個問題的匯編:

movl	$3,16(%esp)
movl $98,12(%esp)
movl $2,8(%esp)
movl $97,4(%esp)
movl $1,(%esp)
call _func2

可以看出參數對應的棧地址應該是連續的


另外,這個程序在VC6下的結果完全不一樣:


func for n++

0 0 0

12ff2c 12ff30 12ff34


func for ++n

3 2 1

12ff2c 12ff30 12ff34


func2

12ff24 12ff28 12ff2c 12ff30 12ff34


但是最後的地址也是連續的。


此類問題知道上問過多次了,可以說沒有什麼意義,結果與編譯器實現乎塵游相關,實際編程沒有用處,除非寫代碼的人喜歡玩花俏

『伍』 誰能詳細解釋一下C語言函數中的無參、有參、形參、實參,要簡單易懂!謝謝!

在C語言中,函數的無參用關鍵字用void表示,如果一個函數的參數為void,當我們調用此函數並給它傳遞一個參數時,編譯器會給出錯誤的警告,因為你把參數傳遞給了一個不接受參數的函數。 例: int func(void) { ... } int main(void) { func(5) ; /*It will cause an error .*/ ... return 0 ; } 這里注意一點,在C語言中(而不是C++中),如果函數的參數什麼也沒有,如int func(),那麼此時你調用這個函數的時候放不放參數編譯器都不會給出鉛絕警告,編譯器會認為它是可有可無的,但這不是一個好方法攔缺,如果函數不需要任何參數,那一定要顯式的把void加到參數列表裡。 參數是什麼呢,比如f(x) = 5x + 3 ;這里的x就是參數(可理解為做為參照的數),是形參,f(5)會得出一個值,f(10)又會得出一個值(顯然這是個雙射函數,呵呵),那麼這里的5 , 10都是實參(實際傳遞的參數),實參會替換形參的位置。 如: int func(int a , int b) { return a + b ; } 其中a , b是形參,調用時 func(5,6) ; 那5 , 6就是實參,函數得到實參後會替換原來形參的位置,相當於將5和6相加並返回結果槐衡姿。

『陸』 c語言中main函數的參數

main函數可以不帶參數,也可以帶參數,這個參數可以認為是 main函數的形式參數。
C語言規定main函數的參數只能有兩個,還規定argc(第一個形參)必須是整型變數,argv( 第二個形參)必須是指向字元串的指針數組。加上形參說明後,main函數的函數頭應寫為:
int main (int argc,char *argv[])
由於main函數不能被其它函數調用,因此不可能在程序內部取得實際值。那麼,在何處把實參值賦予main函數的形參呢? 實際上,main函數的參數值是從操作系統命令行上獲得的。當我們要運行一個可執行文件時,在DOS提示符下鍵入文件名,再輸入實際參數即可把這些實參傳送到main的形參中去。
DOS提示符下命令行的一般形式為:
C:\>可執行文件名 參數 參數……

『柒』 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。不知給你說清楚了沒有?希望有幫助。

『捌』 c語言中參數是什麼概念

函數的參數分為形參和實參兩種。

形參出現在函數定義中,在整個函數體內都可以使用,離開該函數則不能使用。實參出現在主調函數中,進入被調函數後,實參變數也不能使用。

形參和實參的功能是作數據傳送,發生函數調用時,主調函數把實參的值傳送給被調函數的形參從而實現主調函數向被調函數的數據傳送。

舉個例子:

定義一個函數s=f(a,b),功能是將a和b的差賦值給s,那麼,a和b就是這個函數的兩個參數。

(8)c語言中各種函數的參數擴展閱讀:

C語言的參數傳遞方式

方法有3種方式:值傳遞、地址傳遞、引用傳遞

tips:

被調用函數的形參只有函數被調用時才會臨時分配存儲單元,一旦調用結束佔用的內存便會被釋放

值傳遞和地址傳遞,傳遞的都是實參的一個拷貝

C語言中實參和形參之間的數據傳遞是單向的「值傳遞」,單向傳遞,只能由實參傳給形參,反之不行

輸出格式並沒有選擇%p而是選擇了%d,因為十進制的數看起來更直觀。

值傳遞

如果只是傳遞值的話:

#include <stdio.h>

//值傳遞傳值

void swap( int x, int y);

int main()

{

int a=2,b=3;

printf("before:實參為a,b a=%d,地址為%d b=%d,地址為%d ",a,&a,b,&b);

swap(a,b);

printf("after:實參為a,b a=%d,地址為%d b=%d,地址為%d ",a,&a,b,&b);

return 0;

}

void swap(int x,int y)

{

int tmp;

tmp=x;

x=y;

y=tmp;

printf("inside:形參為x,y x=%d,地址為%d y=%d,地址為%d ",x,&x,y,&y);

}