Ⅰ c語言,返回函數的三種方法,請解釋明白點,有例子更好了
函數參數和
返回值
三種傳遞方式:值傳遞、指針傳遞和引用傳遞
引用與指針的比較
引用是
C++中的概念,初學者容易把引用和指針混淆一起。一下程序中,n
是m
的一個引用(
reference
),m
是被引用物(referent)。
int
m;
int
&n
=
m;
n
相當於m
的別名(綽號),對n
的任何操作就是對m
的操作。所以n
既不是m
的拷貝,也不是指向m
的指針,其實n
就是m
它自己。
C++語言
中,函數的參數和返回值的傳遞方式有三種:值傳遞、指針傳遞和引用傳遞。
以下是「值傳遞」的示常式序。由於Func1
函數體內的x
是
外部變數
n
的一份拷貝,改變x
的值不會影響n,
所以n
的值仍然是0。
void
Func1(int
x)
{
x
=
x
+
10;
}
int
n
=
0;
Func1(n);
cout
<<
「n
=
」
<<
n
<<endl;
//
n
=
0
以下是「指針傳遞」的示常式序。由於Func2
函數體內的x
是指向外部變數n
的指針,改變該指針的內容將導致n的值改變,所以n
的值成為10。
void
Func2(int
*x)
{
(*
x)
=
(*
x)
+
10;
}
int
n
=
0;
Func2(&n);
cout
<<
「n
=
」
<<
n
<<endl;
//
n
=
10
以下是「引用傳遞」的示常式序。由於Func3
函數體內的x
是外部變數n
的引用,x
和n
是同一個東西,改變x
等於改變n,所以n
的值成為10。
void
Func3(int
&x)
{
x
=
x
+
10;
}
int
n
=
0;
Func3(n);
cout
<<
「n
=
」
<<
n
<<endl;
//
n
=
10
對比上述三個示常式序,會發現「引用傳遞」的性質象「指針傳遞」,而書寫方式象「值傳遞」。實際上「引用」可以做的任何事情「指針」也都能夠做,為什麼還要「引用」這東西?
答案是「用適當的工具做恰如其分的工作」。
Ⅱ C語言常用的函數有哪些
C語言庫函數,常用庫函數有:
1、scanf格式輸入函數
2、printf格式輸出函數
3、systemdos命令函數
4、sort排序
5、main主函數
6、fgets文件讀取字元串函數
7、fputs文件寫入字元串函數
8、fscanf文件格式讀取函數
9、fprintf文件格式寫入函數
10、fopen打開文件函數
11、getchar輸入字元函數
12、putchar輸出字元函數
13、malloc動態申請內存函數
14、free釋放內存函數
15、abs求絕對值數學函數
16、sqrt求平方根數學函數
(2)c語言有三種函數哪三種擴展閱讀
語言組成:
1、數據類型
C的數據類型包括:整型、字元型、實型或浮點型(單精度和雙精度)、枚舉類型、數組類型、結構體類型、共用體類型、指針類型和空類型。
2、常量與變數
常量其值不可改變,符號常量名通常用大寫。
變數是以某標識符為名字,其值可以改變的量。標識符是以字母或下劃線開頭的一串由字母、數字或下劃線構成的序列,請注意第一個字元必須為字母或下劃線,否則為不合法的變數名。變數在編譯時為其分配相應存儲單元。
3、數組
如果一個變數名後面跟著一個有數字的中括弧,這個聲明就是數組聲明。字元串也是一種數組。它們以ASCII的NULL作為數組的結束。要特別注意的是,方括內的索引值是從0算起的。
4、指針
如果一個變數聲明時在前面使用 * 號,表明這是個指針型變數。換句話說,該變數存儲一個地址,而 *(此處特指單目運算符 * ,下同。C語言中另有 雙目運算符 *) 則是取內容操作符,意思是取這個內存地址里存儲的內容。指針是 C 語言區別於其他同時代高級語言的主要特徵之一。
Ⅲ c語言中都有哪幾種函數
看包含什麼頭文件。
一般用的比較多的就是stdio.h,string.h和math.h三個頭文件裡面的函數。
都是標准庫函數,有一些事字元串處理函數,還有數學函數等等。
Ⅳ C語言程序中的函數可分為哪三類,執行的核心函數是哪一個
調用函數也是在調用時才執行的經過函數聲明的自定義函數,所以在main執行,在main結束
Ⅳ 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語言中,函數調用的一般形式為:
函數名(實際參數表)
對無參函數調用時則無實際參數表。實際參數表中的參數可以是常數,變數或其它構造類型數據及表達式。各實參之間用逗號分隔。
8.4.2
函數調用的方式
在C語言中,可以用以下幾種方式調用函數:
1.
函數表達式:函數作為表達式中的一項出現在表達式中,以函數返回值參與表達式的運算。這種方式要求函數是有返回值的。例如:z=max(x,y)是一個賦值表達式,把max的返回值賦予變數z。
2.
函數語句:函數調用的一般形式加上分號即構成函數語句。例如:
printf
("%d",a);scanf
("%d",&b);都是以函數語句的方式調用函數。
3.
函數實參:函數作為另一個函數調用的實際參數出現。這種情況是把該函數的返回值作為實參進行傳送,因此要求該函數必須是有返回值的。例如:
printf("%d",max(x,y));
即是把max調用的返回值又作為printf函數的實參來使用的。在函數調用中還應該注意的一個問題是求值順序的問題。所謂求值順序是指對實參表中各量是自左至右使用呢,還是自右至左使用。對此,各系統的規定不一定相同。介紹printf
函數時已提到過,這里從函數調用的角度再強調一下。
我會說我復制的?
這么清楚了應該看的懂吧?
看不懂再問我
Ⅶ C語言函數調用的三種方式並分別舉一例。
1、值傳遞,創建變數x和y,x的值等於a的值,y的值等於b的值
void Exchg1(int x, int y)
{
int tmp;
tmp=x;
x=y;
y=tmp;
printf(「x=%d,y=%d/n」,x,y)
}
void main()
{
int a=4,b=6;
Exchg1 (a,b) ;
printf(「a=%d,b=%d/n」,a,b)
}
2、地址傳遞,相當於建立了px和py兩個指向整型的指針,其值分別為a和b的地址
Exchg2(int *px, int *py)
{
int tmp=*px;
*px=*py;
*py=tmp;
print(「*px=%d,*py=%d/n」,*px,*py);
}
main()
{
int a=4;
int b=6;
Exchg2(&a,&b);
Print(「a=%d,b=%d/n」, a, b);
}
3、引用傳遞,x和y直接引用a和b,對a和b操作,相當於給a、b起了別名x、y
Exchg2(int &x, int &y)
{
int tmp=x;
x=y;
y=tmp;
print(「x=%d,y=%d/n」,x,y);
}
main()
{
int a=4;
int b=6;
Exchg2(a,b);
Print(「a=%d,b=%d/n」, a, b);
}
(7)c語言有三種函數哪三種擴展閱讀:
printf用法:
printf()函數的調用格式為:printf("<格式化字元串>",<參量表>)。
其中格式化字元串包括兩部分內容:一部分是正常字元,這些字元將按原樣輸出;另一部分是格式化規定字元,以"%"開始,後跟一個或幾個規定字元,用來確定輸出內容格式。
參量表是需要輸出的一系列參數,其個數必須與格式化字元串所說明的輸出參數個數一樣多,各參數之間用","分開,且順序一一對應,否則將會出現意想不到的錯誤。
比如:
int a=1234;
printf("a=%d ",a);
輸出結果為a=1234。
Ⅷ C語言有幾種函數都是干什麼用的所有函數都要記下來嗎宏是什麼意思c語言函數和其他語言函數相同
C語言中,首先有個主函數,即入口函數,函數名為main,也就是
所有程序的執行都是從main函數開始的。
然後就是兩類函數,一類是庫函數,這些函數是編譯器自帶的,
不同的函數有不同的功能,你可以再編寫程序的時候去調用它們,
只要在程序中用#include 相應的頭文件就可以。再有一類函數
是自定義函數,這類函數的功能是看程序員具體是怎麼編寫的。
你一般只需要記住常用的庫函數就可以,例如printf,別的用到
的可以去查看具體怎麼調用。
宏定義是C提供的三種預處理功能的其中一種,這三種預處理包括:宏定義、文件包含、條件編譯
宏定義又稱為宏代換、宏替換,簡稱「宏」。
格式:
#define 標識符 字元串
其中的標識符就是所謂的符號常量,也稱為「宏名」。
預處理(預編譯)工作也叫做宏展開:將宏名替換為字元串。
掌握"宏"概念的關鍵是「換」。一切以換為前提、做任何事情之前先要換,准確理解之前就要「換」。
即在對相關命令或語句的含義和功能作具體分析之前就要換:
例:
#define PI 3.1415926
把程序中出現的PI全部換成3.1415926
c語言函數和其他語言函數是不同的,是相互獨立的。
希望對你有幫助。
Ⅸ c語言中,函數類型有幾種
一般包括字元庫函數,數學函數,目錄函數,進程函數,診斷函數,操作函數等。
字元庫函數所在函數庫為ctype.h;數學函數所在函數庫為math.h、stdio.h、string.h、float.h;目錄函數所在函數庫為dir.h、dos.h;進程函數所在函數庫為stdlib.h、process.h。
診斷函數所在函數庫為assert.h、math.h;介面子程序所在函數庫為:dos.h、bios.h;操作函數所在函數庫為string.h、mem.h;時間日期函數函數庫為time.h、dos.h。
(9)c語言有三種函數哪三種擴展閱讀
C語言為一種程序設計的入門語言。由於C語言的語句中沒有提供直接計算sin或cos函數的語句,會造成編寫程序困難;但是函數庫提供了sin和cos函數,可以拿來直接調用。顯示一段文字,我們在C語言中找不到顯示語句,只能使用庫函數printf。
C語言的庫函數並不是C語言本身的一部分,它是由編譯程序根據一般用戶的需要,編制並提供用戶使用的一組程序。C的庫函數極大地方便了用戶,同時也補充了C語言本身的不足。在編寫C語言程序時,使用庫函數,既可以提高程序的運行效率,又可以提高編程的質量。
Ⅹ 簡述c語言中函數共有哪幾種類型,各有何區別
如C語言中:
int max(int x,int y)
{
return(x>yx:y;);
}
就是一段比較兩數大小的函數,函數有參數與返回值。C++程序設計中的函數可以分為兩類:帶參數的函數和不帶參數的函數。這兩種參數的聲明、定義也不一樣。
帶有(一個)參數的函數的聲明:
類型名標示符+函數名+(類型標示符+參數)
{
}
不帶參數的函數的聲明:
void+函數名( )
{
}
花括弧內為函數體。
帶參數的函數有返回值,不帶參數的沒有返回值。
C++中函數的調用:函數必須聲明後才可以被調用。調用格式為:函數名(實參)調用時函數名後的小括弧中的實參必須和聲明函數時的函數括弧中的形參個數相同。有返回值的函數可以進行計算,也可以做為右值進行賦值。
C語言中的部分函數:
main(主函數)
max(求最大數的函數)
scanf(輸入函數)
printf(輸出函數)