⑴ c語言中 多個源文件之間函數如何調用
首先要建立一個頭文件,以.h保存
這樣
#include <stdio.h>
typedef struct {
char name[100][60];
char number[100][8];
int mon[100],day[100];
char sex[100];
double height[100];
}inf;
int input(inf *x ,int i);
int output(inf *y ,int h);
當然要有個主函數.
#include "inout.h"
int main(void)
{
int n;
inf id;
do{
printf("*********n");
scanf("%d",&n);
}while(n>100);
input(&id,n);
output(&id,n);
return(0);
}
然後 這個頭文件有兩個函數.這兩個函數,以.c的格式保存.
#include <stdio.h>
#include "inout.h"
int input(inf *x,int i)
{
........
}
#include <stdio.h>
#include "inout.h"
int output(inf *y ,int h)
{
....
}
主函數來負責調用,別的源文件.但是,要有一定要有個頭文件.
就相當說, 站長(主函數)要控制各個列車(多個源文件).需要通過調度台(頭文件)
這是我的理解,我也是剛學.希望大家指正
編譯的時候,要分別編譯,先要把非主函數的源文件便宜成obj格式.
我的編譯器是:cl /c 源文件名.c (cygwin中是 gcc -c 源文件名.c)
最後和主函數結合.
cl main.c 源文件.obj
cygwin中是 gcc -o main main.c 源文件.o
不知道 我說的夠不夠明白
⑵ c語言中函數調用有三種方法,能幫忙各舉個例子嗎
1、首先在打開的C語言資料庫中,輸入【#include】,如下圖所示。
⑶ c語言在一個函數內部調用另一個函數的調用方法稱為___
在一個函數部調用另一個函數的調用方式稱為嵌套調用,嵌套調用就是某個函數調用另外一個函數(即函數嵌套允容許在一個函數中調用另外一個函數)。
#函數的嵌套調用:在一個函數內部調用另一個函數
deffn1():
pass
deffn2():
fn1() #函數的嵌套調用
deffn3():
fn2() #函數的嵌套調用
fn3()
(3)c語言之間的調用擴展閱讀:
調用注意事項:
一、前提條件:
1、兩個文件必須編入同一個可執行文件;
2、被調用函數必須是全局函數,即不能是static函數。如果有static修飾,那麼必須寫在頭文件中,並被另一個文件引用。
二、聲明:
1、可以聲明在頭文件中,並在調用文件中引用該頭文件;
2、可以直接在調用文件聲明,形式為
externRET_TYPEFUNC_NAME(PARAM_LIST);
其中extern非必須,但一般都會寫上,表示這個是其它文件定義的。
⑷ 計算機c語言中函數之間如何調用
C語言都是先定義後使用的
通過函數名調用如:
double
sum(double
x,double
y)
{
double
z;
z=x+y;
retun(z);
}
main()
{
double
h;
double
a,b;
h=sum(a,b);
}
⑸ c語言函數調用例子
C語言中,函數調用的一般形式為:函數名(實際參數表)
對無參函數調用時則無實際參數表。實際參數表中的參數可以是常數,變數或其它構造類型數據及表達式。各實參之間用逗號分隔。
在C語言中,可以用以下幾種方式調用函數:
1、函數表達式:函數作為表達式中的一項出現在表達式中,以函數返回值參與表達式的運算。這種方式要求函數是有返回值的。例如:z=max(x,y)是一個賦值表達式,把max的返回值賦予變數z。
2、函數語句:函數調用的一般形式加上分號即構成函數語句。例如: printf ("%d",a);scanf ("%d",&b);都是以函數語句的方式調用函數。
3、函數實參:函數作為另一個函數調用的實際參數出現。這種情況是把該函數的返回值作為實參進行傳送,因此要求該函數必須是有返回值的。
⑹ C語言如何調用函數
C語言中,函數調用的一般形式為:
函數名(實際參數表)
對無參函數調用時則無實際參數表。實際參數表中的參數可以是常數、變數或其它構造類型數據及表達式。各實參之間用逗號分隔。
#include<stdio.h>
intfun(intx,inty);//函數聲明,如果函數寫在被調用處之前,可以不用聲明
voidmain()
{
inta=1,b=2,c;
c=fun(a,b);//函數的調用,調用自定義函數fun,其中a,b為實際參數,傳遞給被調用函數的輸入值
}
//自定義函數fun
intfun(intx,inty)//函數首部
{//{}中的語言為函數體
returnx>y?x:y;//返回x和y中較大的一個數
}
(6)c語言之間的調用擴展閱讀
C語言中不允許作嵌套的函數定義。因此各函數之間是平行的,不存在上一級函數和下一級函數的問題。但是C語言允許在一個函數的定義中出現對另一個函數的調用。
這樣就出現了函數的嵌套調用。即在被調函數中又調用其它函數。這與其它語言的子程序嵌套的情形是類似的。其關系可表示如圖。
圖表示了兩層嵌套的情形。其執行過程是:執行main函數中調用a函數的語句時,即轉去執行a函數,在a函數中調用b 函數時,又轉去執行b函數,b函數執行完畢返回a函數的斷點繼續執行,a函數執行完畢返回main函數的斷點繼續執行。
⑺ C語言中什麼叫調用函數為什麼函數和函數之間是調用關系
函數調用是指:簡單來講,假如小明是班長,小紅是本班的生活委員,小明要想收班費,但每個人都有不同的職責,而班長是用來組織和統籌工作的,而作為生活委員的小紅的職責之一就是收取和管理班費,所以這樣的話,小明只需讓小紅去做就行,也就是說只需發出指令給小紅就可以了,而小紅就是執行這項活動的承擔者;在這里小紅就相當於被調用函數,小明是調用函數。
函數調用總共有三種方式:
1.
函數表達式:
1函數作為表達式中的一項出現在表達式中,以函數返回值參與表達式的運算。這種方式要求函數是有返回值的。例如:z=max(x,y)是一個賦值表達式,把max的返回值賦予變數z。
2.
函數語句:
函數調用的一般形式加上分號即構成函數語句。例如:
printf
("%d",a);scanf
("%d",&b);都是以函數語句的方式調用函數。
3.
函數實參:
函數作為另一個函數調用的實際參數出現。這種情況是把該函數的返回值作為實參進行傳送,因此要求該函數必須是有返回值的。例如:
printf("%d",max(x,y));
即是把max調用的返回值又作為printf函數的實參來使用的。在函數調用中還應該注意的一個問題是求值順序的問題。所謂求值順序是指對實參表中各量是自左至右使用呢,還是自右至左使用。對此,各系統的規定不一定相同。
注意的是:1.假如在你的那句調用語句開始,例如:
#include
int
max(int
x,int
y){
if(x>y||x=y)
return
x;
else
return
y;
}
void
main(){
int
a,b;
scanf("%d%d",&a,&b)
;
printf("%d",max(a,b));
printf("程序結束\n");
}
在這個函數中,我們是在main()函數中用函數實參進行調用的,這樣的話。main()函數是一個程序的入口,
在執行
printf("%d",max(a,b));
這條語句的max(a,b)時候,開始轉到max(int,int)函數中執行,執行完後在回到printf("%d",max(a,b));
進行輸出a,b中的最大值,然後再接著執行main()函數的剩下語句
printf("程序結束\n");推出程序。但我們調用的時候,main()函數(即調用函數)需要給被調用函數提供必要的具體數據,即x,y的值。所以表達式max(a,b)即把a的值賦給x,b的值賦值給y;如此執行下去。
即若輸入
3
4
程序結果為:
4
程序結束
2.還是上面的那個例子,若int
max(int
x,int
y)在main()函數的下面,要調用的話,就需要在main()函數之前進行聲明,聲明格式為:
函數返回值類型
函數名
(形參類型1
形參名1,形參類型2
形參名2......);其中分號不可少,形參名可以省去,但是形參類型和返回值類型均不可省!!!如下所示:
#include
int
max(int
x,int
y);
//函數聲明1
或者int
max(int
,int
);
//函數聲明2
void
main(){
或者
int
max(int
x,int
y);
//函數聲明3
或者int
max(int
,int
);
//函數聲明4
int
a,b;
scanf("%d%d",&a,&b)
;
printf("%d",max(a,b));
printf("程序結束\n");
}
int
max(int
x,int
y){
if(x>y||x=y)
return
x;
else
return
y;
}
函數聲明的作用是讓調用函數認識被調用函數,這樣才可以想被調用函數發送指令!
至於為什麼用調用這個名字,個人覺得這個是因為很貼切吧,便於理解!!!
你明白了嗎?不明白可以追問哦!希望採納哦!
⑻ 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);
}
(8)c語言之間的調用擴展閱讀:
printf用法:
printf()函數的調用格式為:printf("<格式化字元串>",<參量表>)。
其中格式化字元串包括兩部分內容:一部分是正常字元,這些字元將按原樣輸出;另一部分是格式化規定字元,以"%"開始,後跟一個或幾個規定字元,用來確定輸出內容格式。
參量表是需要輸出的一系列參數,其個數必須與格式化字元串所說明的輸出參數個數一樣多,各參數之間用","分開,且順序一一對應,否則將會出現意想不到的錯誤。
比如:
int a=1234;
printf("a=%d ",a);
輸出結果為a=1234。
⑼ 計算機c語言中函數之間如何調用
函數要先聲明,後調用,如:
#include<stdio.h> //包含頭文件,頭文件中含有一些函數的定義,包含它,相當於已經聲明了下面的Printf函數
int main()//主函數
int sum(int x,int y) //在調用前要先聲明,聲明可以先不定義函數體,也可以在聲明的同時定義函數體
//int sum(int x,int y)
//{
// return x+y;
//}
void main()
{
int a=3,b=4,c;
c=sum(a,b);
printf("計算結果是:%d",c);
}
int sum(int x,int y) //定義聲明的函數
{
return x+y;
}
⑽ c語言中怎麼調用函數謝謝
C語言中,函數調用的一般形式為:函數名(實際參數表)對無參函數調用時則無實際參數表。實際參數表中的參數可以是常數、變數或其它構造類型數據及表達式。各實參之間用逗號分隔。
#include<stdio.h>
int fun(int x, int y); // 函數聲明,如果函數寫在被調用處之前,可以不用聲明
void main()
{
int a=1, b=2, c;
c = fun(a, b); // 函數的調用,調用自定義函數fun,其中a,b為實際參數,傳遞給被調用函數的輸入值
}
// 自定義函數fun
int fun(int x, int y) // 函數首部
{ // {}中的語言為函數體
return x>y ? x : y; // 返回x和y中較大的一個數
}
函數實參
函數作為另一個函數調用的實際參數出現。這種情況是把該函數的返回值作為實參進行傳送,因此要求該函數必須是有返回值的。例如: printf("%d",max(x,y)); 即是把max調用的返回值又作為printf函數的實參來使用的。在函數調用中還應該注意的一個問題是求值順序的問題。
所謂求值順序是指對實參表中各量是自左至右使用呢,還是自右至左使用。對此,各系統的規定不一定相同。介紹printf 函數時已提到過,這里從函數調用的角度再強調一下。
以上內容參考:網路-函數調用