c語言引用調用
① c語言 帶參數函數的引用調用
#include <stdio.h>
void fun(int * a,int k);
void main()
{
int a[10];
printf("請輸入10個整數:\n");
for(int i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
fun(a,sizeof(a)/sizeof(a[0]));
}
void fun(int a[],int k)//這就是你想要的函數
{
int g0=0,t0=0,e0=0;/*g0就是>0,t0就是小於0,e0就等0*/
for(int i=0;i<k;i++)
{
if(a[i]>0) g0++;
if(a[i]==0) e0++;
if(a[i]<0) t0++;
}
printf("大於0的個數為:%d\n",g0);
printf("小於0的個數為:%d\n",t0);
printf("等於0的個數為:%d\n",e0);
}
/*
說明就和ichenq的差不多,只是ichenq的那個有問題,比如他的if語句里多了幾個";"號,導致無沒通過,另外我用他的函數來測試得不到想要的結果
sizeof(a)/sizeof(a[0])就是數組a的長度*/
② c語言中怎麼調用自己定義的函數
在使用一個函數之前必須先對他進行聲明:
//void B();聲明B函數的存在。void A(){B();//非法,程序執行到此時並不知道B函數的存在。}void B(){}
或者
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int fa(int n)
{
int a;
for(a=2;a<=sqrt(n*1.0),n%a!=0;a++);
if(a>sqrt(n*1.0))
return(1);
else
return(0);
}
void main( )
{
int n,q;
scanf("%d",&n);
(2)c語言引用調用擴展閱讀
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
int fa(int n)
{
int a;
for(a=2;a<=sqrt(n*1.0),n%a!=0;a++);
if(a>sqrt(n*1.0))
return(1);
else
return(0);
}
void main( )
{
int n,q;
scanf("%d",&n);
if(fa(n)==1)
printf("n");
else
printf("y");
system("pause");
exit(0);
}
③ C語言中如何引用其它C源文件中的函數
分類: 電腦/網路 >> 程序設計 >> 其他編鍵圓汪程語言
問題描述:
如題,比如我建了兩個C源文件
A1.C 和 A2.c
我把一個自字義函數寫在A2.c裡面,然後在A1.c裡面調用它
1,A1.c要怎樣調用?
2,A2.c裡面要怎樣寫?只寫一個稿仔自定義函數就可以了嗎?
解析:
有兩種方法:
1。在A2.c中有完整的函數定義,在A1.c中添加一下要用腔握到的函數原型就可以了,例如:
在A2.c中:有函數void A2(){...};
在A1.c中:在文件前頭增加一行:void A2();就可以了
2。把A2.c中完整定義的函數的原型,寫到一個A2.h文件中,然後在A1.c的文件頭增加#include "A2.h"就可以了
以上兩種方法,在A1.c中都可以正常的調用,就跟在A2.c中調用一樣。
④ 怎樣在c程序裡面調用其他程序
C++和C是兩種完全不同的編譯鏈接處理方式如衫,如果直接在C++裡面調用C函數,會找不到函數體,報鏈接錯誤。要解決這個問題,就要在 C++文件裡面顯示聲明一下哪些函數是C寫的,要用C的方式來處理。
1.引用頭文件前需要加上 extern 「C」,如果引用多個,那麼就如下所示
extern 「C」
{
#include 「 s.h」
#include 「t.h」
#include 「g.h」
#include 「j.h」
};
然後在調用這些函數之前,需要將函數也全部聲明一遍。
2.C++調用C函數的方法,將用到的沖橡瞎函數全部重新聲明一遍
extern 「C」
{
extern void A_app(int);
extern void B_app(int);
extern void C_app(int);
extern void D_app(int);
}
C++程序中調用被c編譯器編譯後的函數,為什麼要加extern "C"?
C++語言支持函數重載,C語言不支持函數重載。函數被C++編譯後在庫中的名字與C語言的不同。假設某個C 函數的聲明如下:
void foo(int x, int y);
該函數被C 編譯器編譯後在庫中的名字為_foo,而C++編譯器則會產生像_foo_int_int之類的名字用來支持函數重載和類型安全連接。由於編譯後的名字不同,C++程序不能直接調用C 函數。C++提供了一個C 連接交換指定符號extern「C」來解決這個問題。例如:
extern 「C」
{
void foo(int x, int y);
// 其它函數
}
或者寫成
extern 「C」
{
#include 「myheader.h」
// 其它C 頭文件
}
這就告訴C++編譯譯器,函數 foo 是個C 連接,應該到庫中找名字_foo 而不是找_foo_int_int。C++編譯器開發商已經對C 標准庫的頭文件作了extern「C」處理,所以我散空們可以用#include 直接引用這些頭文件。
⑤ C語言 引用DLL 調用DLL
首先如果有.lib文件的話,直接在最開始加一句 #pragma comment(lib,"1.lib")然後聲明一下Msgbox函數比如你的Msgbox函數是 int Msgbox(char * str1,char *str2);那麼你應該 _declspec(dllimport) int Msgbox(char *str1,char *str2);然後你在函數中就可以直接用Msgbox函數了 第二種是動態載入dll 直接在要用的地方HINSTANCE hinst=LoadLibrary("1.dll");typedef int (*p)(char*,char*);//這個是定義一個函數指針然後用p pfun=(p)GetProcAddress(hinst,"Msgbox");然後就可以調用了
⑥ C語言形參和實參,傳值調用和引用調用的區別
形參與實參:
int a(int x){//這個x就是形參,就是你定義的變數名稱
......
}
int main(){
int y=5;
a(y);//具體的變數y就是實參
a(z);//z也是實參,就是實實在在的值
}
傳值調用和引用調用:
二者的區別為,當傳引用時,實際傳到函數中的形參,是實際參數的一個引用,而不是僅傳遞值到函數中。具體的表現有以下幾條:
1、傳引用時,形參和實參是同一個變數,即使用相同的內存空間,二者有相同的地址。而傳值時二者地址不同;
2、傳引用時,由於沒有新隱睜建變數,所以對於類對象參數,不會產生構造和析構。而如果是傳值調用,調用時會進行構造,退出函數時會進行析構;
3、由於傳引用使用的是原本實參的地址,所以對引用參數值的修改,會在退出困仔函數後體現在主調函數中,而傳值調用對參數的灶尺歲修改不會影響到主調函數。
⑦ C語言形參和實參,傳值調用和引用調用的區別
int a(int x){//這個x就是形參,就是你定義的變數名稱
.........
}
int main(){
int y=5;
a(y);//具體的變數y就是實參指桐
a(z);//z也是實參,就是實實在在的值
}
#include<iostream>
usingnamespacestd;
voidswap(inta,intb)
{
inttemp;
temp=a;
a=b;
b=temp;
}
main()
{
inta=3,b=5;
cout<<"before『swap』:a="<<a<<",b="<<b<<endl;
swap(a,b);
cout<<"after『swap』:a="<<a<<",b="<<b<<endl;
}
這個例子是傳值調用,意思就是形參的改變不會影響實參的值。則薯
你運行一下可知主函數調用了swap函數後a,b的值並沒有發生交換。
原因是,調用swap函數時編譯器為swap(inta,intb)中的形參a,b單獨分配內存空間,並接受主函數傳遞來的值,這塊內存空間和main()函數中的a,b不是同一內存空間。所以在swap(inta,intb)中a,b發生了交換,但main函數中a,b沒發生交換。即主調函數與被調函數的操作對象各不相同,參數僅在調用時由實參向形參傳遞,而不可由形參向實參傳遞。
要使a,b發生交換需要使用傳址調用。程序改為如下:
#include<iostream>
using唯盯坦namespacestd;
voidswap(int&a,int&b)
{
inttemp;
temp=a;
a=b;
b=temp;
cout<<"in『swap』:a="<<a<<",b="<<b<<endl;
}
main()
{
inta=3,b=5;
cout<<"before『swap』:a="<<a<<",b="<<b<<endl;
swap(a,b);
cout<<"after『swap』:a="<<a<<",b="<<b<<endl;
}
引用可以看作是一個變數的別名,使用引用時,對於voidswap(inta,intb)編譯器並沒有給形參a,b分配新的內存空間,只是使形參a,b指向了main函數中實參a,b的內存空間,他們共享同一內空間,即把地址給了形參。所以在voidswap(inta,intb)函數中對這塊內存的改變也就改變了實參的值。
除了使用引用,也可以使用指針。
指針方式和引用方式都屬於傳址調用。
⑧ c語言中怎麼調用函數
函數分為庫函數和自定義函數,在調用庫函數時只要標明頭文件(所謂頭文件就是一個東西,裡麵包括了一些函數各聲明之類的,當你要調用它中的函數時就就得先向程序說明你要調用這個文件里的函數,否則有有侵權行為哦)可以在主調函數中調用這個頭文件里的所有函數了,例如頭文件為#include<stdio.h>你就可以在主調函數中調用這個頭文件里的函數:
main
{ printf("haha");/*這時main函數為主調函數,printf為被調函數*/
}
調用自定義函數時其實和調用庫函數一樣的,只不過這個函數是你自己定義的,再如:
main
{ void f();/*聲明 f()函數*/
f(); /*調用f()函數*/
}
f()
{
printf("haha");/*f()函數調用庫函數*/
}
⑨ 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中較大的一個數
}
(9)c語言引用調用擴展閱讀
C語言中不允許作嵌套的函數定義。因此各函數之間是平行的,不存在上一級函數和下一級函數的問題。但是C語言允許在一個函數的定義中出現對另一個函數的調用。
這樣就出現了函數的嵌套調用。即在被調函數中又調用其它函數。這與其它語言的子程序嵌套的情形是類似的。其關系可表示如圖。
圖表示了兩層嵌套的情形。其執行過程是:執行main函數中調用a函數的語句時,即轉去執行a函數,在a函數中調用b 函數時,又轉去執行b函數,b函數執行完畢返回a函數的斷點繼續執行,a函數執行完畢返回main函數的斷點繼續執行。
⑩ c語言怎麼調用dll文件
1、新建DLLTest文件夾,在該文件夾中新建source文件夾。
注意事項:
C語言能以簡易的方式編譯、處理低級存儲器。C語言是僅產生少量的機器語言以及不需要任何運行環境支持便能運行的高效率程序設計語言。