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语言是仅产生少量的机器语言以及不需要任何运行环境支持便能运行的高效率程序设计语言。