函数调用可以作为一个函数的形参 函数调用可以作为一个函数的什么
c语言中用函数做参数怎么用
只能这样不可以直接拿函数做参数的。
函数调用可以作为一个函数的形参 函数调用可以作为一个函数的什么
函数调用可以作为一个函数的形参 函数调用可以作为一个函数的什么
int
然后
int函数二(参数)
函数二,参数可以等于函数一的return的值或表达式。
在上面的这个程序中,其实函数int inc(int)就相当于int(inc)(int),因为ANSI规定函数本身就是一个指针,而上面的inc其实本身就是一个指针,这个指针指向一个返回整数的函数,于是在函数void print_result(char funcname,int(pfunc)(int),int x)中,int(pfunc)(int)其实本身就是一个指针,这样就不难理解,在main()函数中调用print_result函数时传递的是inc了,因为inc也是一个指向函数的指针。
如果想透彻地了解这一点,我建议你看一本书:
#include
void print_result(char funcname, int (pfunc)(int), int x)
{printf("%s(%d)=%dn", funcname, x, pfunc(x));
{return x+1;
}int main()
{print_result("inc", inc, 5);
return 0;
}运行结果:
inc(5)=6
在C中想把数组作为函数的一个形参,是怎样的形式?
}int inc(int x)EG:
void
sortl(float
b[],int
n)/其中函数参数有两个:一个是数组,形参的形式是b[],它在调用是接受具体数组的首地址;另一个形参是N,它在调用时数组元素的具体个数。注意用数组作为形参时,数组名是一对空方括号,而不能写成b[n],数组元素个数用另一个形参/
i,j;#include
float
t;
for
(i=0;i
b[j])
{t=b[i];b[i]=a,b[j];b[j]=t
C语言作业
size);C 24%5+1=5
BB fun2(a,b)=75-3=32 fun2(a,b)/m=32/13=2
BB a=3(2+(2+1)5)=51
A1,0第二题:BCAAB,CBBDCC
DB
C#define CC_CALLBACK_0(__selector__,__target__, ...) std::bind(&__selector__,__target__, ##__VA_ARGS__)
c语言调用函数,必须在一条语句中完成,主函数main后的一对圆括号中也可以带有形参,对吗为什么
}前面的不对后面的正确 前面那问题我给你个例子 比如说下面这个程序
函数名(实际参数表)printf("n");#include
int fun(int a,int d);
int main()
{int b,c;
b=1;
c=2;
{...............
int fun(int a,int b)
{.........}
main函数一般不包括形参,它是主调函数谁来调用它呢 但你可以参考下面的事实
每一个C程序的执行都是在系统的支持下进行的,main函数是系统执行相就的程序得到“调用”,从系统命令行中得到相应的参数。
main函数有两个参数,其中个参数的类型为整型,用于指出命令行中字符串的个数;第二个参数是一个字符指针数组,分别指向命令行中各个字符串,其一般形式为:
main(int argc, char argv[ ]);其中,变量的名字可以根据程序人员的爱好进行改变,但参数的数目及各参数的类型是不可改变的,如有一个程序文件为file_cpy.exe,如果执行时,命令行为:file_cpy s_f d_f
函数调用可以把函数作为另一个函数的参数,不必使用啊,main函数后面的括号可以带参数
c++类成员函数调用一个普通函数,而普通函数的一个形参是function模板函数
使用std::bind
std::bind(&xxx::B,this, std::placeholders::_1, ....) //有一个参数要被外部传递xxx::B 类函数
this 类对象指针,也可以具体的对象指针,如xxx px; 传px;
如:
std::bind(&xxx::C,this, std::plac另外可以在std::bind的时候额外传递参数eholders::_1, true) // 外部传一个参数,这里额外传一个参数
std::bind(&xxx::C,this, std::placeholders::_2) // 外部传二个参数,就不能额外传参数了
可以使用以下宏定义,出自cocos2d}x
#define CC_CALLBACK_1(__selector__,__target__, ...) std::bind(&__selector__,__target__, std::placeholders::_1, ##__VA_ARGS__)
#define CC_CALLBACK_2(__selector__,__target__,命名函数一(),return一个值或表达式 ...) std::bind(&__selector__,__target__, std::placeholders::_1, std::placeholders::_2, ##__VA_ARGS__)
C语言中用_______表示逻辑值“真”,用________表示逻辑值“”
array_b,题:1.库函数,用户定义函数
std::placeholders::_1 需要被传递的参数个数2.局部变量,全局变量,静态变量,动态变量
double xxx::C(double para, bool su);3.
0,29
4.
O(∩_∩)O呵呵~(申明:错了别找我啊...)
C语言的形参可以在函数内使用吗?
i,temp;可以在函数内使用,请看下面的解释,希望对你有帮助。
函数的参数分为形参和int p = &temp;实参两种。
形参出现在函数定义return x - y;中,在整个函数体内都可以使用,离开该函数则不能使用。
形参和实参的功能是数据传送,发生函数调用时,主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。
定义函数时,指针变量作为函数的形式参数,调用函数时,可以把普通变量作为实际参数。 对不对?
main()指针其实就是地址,例如
{inta=3;
(typep=&a;
这时p就是一个指针,它的值就是a在内存中地址,&是取地址的意思,
在函数调用中用了指针作形参,那么调用函数时候实参传递给函数的是参数的地址,函数在执行的过程中会根据这个传过来的地址去对那个变量进行运算。会把这个变量的值改变。
用引用也是用地址实现这种传递法。
不用指针变量,则函数在调用时会在内存另外一个地方再开启内存,传递过来的值交给了这个新开启的内存。函数在执行过程中则只对这部分新开启的内存变量作,结束后不会返回值,
所以,指针变量其实就是通过地址来改变主函数中变量值
关于c语言中数组作为函数参数的函数之间调用问题
func2(int这问题return x + y;说明你对指针的运用还是不熟练的,既然是数组,作为函数参数传递的是数组首地址.
size;#include
void func1(int array, int size) {
int i,temp;
for (i=0;i
scanf("%d",&temp); //利用scanf输入赋值
array[i]=temp;
//数组array_b根据数组array_a的元素乘以项数获得元素值
void func2(int array_a,int array_b, int size) {
for (i=0;i
array_b[i]=array_a[i] i;
}//输出数组元素
void print(int array, int size) {
for (i=0;i
printf("%d ",array[i]);
}int main(void) {
int size; //数组大小
int array_a, array_b; //声明数组array_a,array_b
scanf("%d", &size);
array_a=malloc(sizeof(int) size);
array_b=malloc(sizeof(int) size);
func1(array_a, size);
func2(array_a, array_b, size);
print(array_a,size);
print(array_b,size);
return 0;
这问题说明你对指针的运用还是不熟练的,既然是数组,作为函数参数传递的是数组首地址.
#include
#include
void
func1(int
array,
for
(i=0;i
{scanf("%d",&temp);
//利用scanf输入赋值
array[i]=temp;
//数组array_b根据数组array_a的元素乘以项数获得元素值
void
i;
for
(i=0;i
array_b[i]=array_a[i]
i;
}//输出数组元素
void
print(int
array,
i;
for
(i=0;i
printf("%d
",array[i]);
}int
main(void)
//数组大小
i;
array_a,
array_b;
//声明数组array_a,array_b
scanf("%d",
&size);
array_a=malloc(sizeof(int)
size);
array_b=malloc(sizeof(int)
size);
func1(array_a,
array_b,
print(array_a,size);
print(array_b,size);
return
0;
函数在数组中的调用是以数组名为实参调用的,因为数组名就是数组的首地址,所以说对数组的调用是不需要返回值的,主调函数里面的数组值会随被调函数的形参数组改变而改变,当然这些都是在你以数组名作为实参的前提下
如果传递值是指针(地址),也就是数组名,虽然在子函数里面,但过去的是地址,所以可以对地址里面指向的内容进行作,也就是一个子函数中可以实现对多个值的作,如果传递的是内容,则至多通过return 进行一个返回值作,总之,要看你传什么
nt &pVec是C++中的指向int类型指针的引用,就是pVec本身是对函数调用时实参的一个引用,而这个实参的类型是一个指向整形的指针类型,之所以使用引用,是因为要在函数中修改这个指针的内容。(如果只需要修改指针指向的内存单元的内容,只需要用指针类型作为形参就可以)
int &Size 中Size同样是一个引用,是指向int类型的一个引用,目的同样是修改引用的实参的值。
fstream在C++中是一个文件流类型,可以读取也可以写入,fstream&可以传入一个fstream类型的对象,在函数中的目的同样是修改原有实参的内容,引用不会对实参进行拷贝。
C语言中什么叫调用函数?为什么函数和函数之间是调用关系?
array_a,int调用函数就是计算机编译或运行时,使用某个函数来完成相关命令。对无参函数调用时则无实际参数表。实际参数表中的参数可以是常数、变量或其它构造类型数据及表达式。各实参之间用逗号分隔。
int i;在程序中通过对函数的调用来执行函数体,其过程与其它语言的子程序调用相似。
C语言中,函数调用的一般形式为:
对无参函数调用时则无实际参数表。实际参数表中的参数可以是常数、变量或其它构造类型数据及表达式。各实参之间用逗号分隔。
函数:把一系列执行某个功能的语句组合在一起就是函数,如加法
add(int
b){
return
+b);
}那么在另一函数中需要使用加法做运算的时候,就称作调用add函数,如计算函数
void
calcintulate(int
b){
type
=1;
if
==
1)
//
实现加法运算
c=
add(a,
b);
//
这里就是函数调用;
//
函数自己足够聪明?函数不会知道要去调用某个方法的,当然是程序员设定的,否则要程序员何用?
你是想问return啊。那我的例子来说:
我通过参数x把4从调用函数传进了被调函数fun,而return又将xx=44=16作为fun(4)的值传回了调用函数main,所以,才能打印出16.
----------------------
比如吧:
fun(int
x)
{return
xx;
}void
{printf("%dn",fun(4));
}这个小程序里面,调用函数认为是main,被调函数认为是fun,实际上还有printf。
c语言中用函数做参数怎么用
if(fun(a,b)) //在这里面函数fun就是在if语句里作为一个判断条件了,如果返回值不为0则if为真如果返回值为0则if为不可以直接拿函数做参数的。
{int然后
函数二(参数)
函数二,参数可以等于函数一的return的值或表达式。
在上面的这个程序中,其实函数int inc(int)就相当于int(inc)(int),因为ANSI规定函数本身就是一个指针,而上面的inc其实本身就是一个指针,这个指针指向一个返回整数的函数,于是在函数void print_result(char funcname,int(pfunc)(int),int x)中,int(pfunc)(int)其实本身就是一个指针,这样就不难理解,在main()函数中调用print_result函数时传递的是inc了,因为inc也是一个指向函数的指针。
如果想透彻地了解这一点,我建议你看一本书:
#include
void print_result(char funcname, int (pfunc)(int), int x)
{printf("%s(%d)=%dn", funcname, x, pfunc(x));
{return x+1;
}int main()
{print_result("inc", inc, 5);
return 0;
}运行结果:
inc(5)=6
声明:本站所有文章资源内容,如无特殊说明或标注,均为采集网络资源。如若本站内容侵犯了原著者的合法权益,可联系 836084111@qq.com 删除。