如何用C语言实现调用函数的返回值为一数组的地址

如何用C语言实现调用函数的返回值为一数组的地址,第1张

这个问题一个较为妥善的方法是把数组定义在主函数,再传入数组地址给自定义函数,如果你非要在自定义函数里定义也行,至于是否需要设置为static,那得看情况,因为函数退出时栈空间并不是马上被刷新,如果你能保证该栈空间在你访问前没被释放就没必要定义为static,但是保险起见定义static更好,因为你可能不知道到底该内存是不是被重新写入了数据,至于你说要返回指向指针的指针,我举个例子,int

fun(),这个就是返回一个指向指针的指针,其指向的指针指向int型,呵呵,明白了没

假定你所谓的指针函数为 返回值类型为 指针的函数;

如 int func(void)

{

int ret_code;

ret_code = (int)malloc(sizeof(int));

return ret_code;

}

假设这么使用:

int pVal;

pVal = func(10);

函数返回的指针值赋给了变量pVal,可以这么说,函数返回的肯定是数值,他的类型是指向int变量的指针,即返回的数值被编译器解释为一个int类型变量的地址,在32位机器上,它通常占用四字节;

b->lchild 本身是指向btree类型变量的指针,它肯定是数值,但是该数值被编译器解释为另外一个btree型变量的地址;

有点拗口是吧,在《C专家编程》一书中有对指针的深刻论述,是C语言进阶学习的必备资料,在学习了C的基础后,就去阅读吧!(学校的图书馆会有的,如果很悲催的话,新华书店肯定有;当然,也存在电子版的)

祝你好运!

因为函数的返回值如果是一个基础类型的话是放在寄存器里面的,并不在内存中所以没有地址,但如果返回一个对象的寄存器中放的是它的地址,所以能对返回一个对象的函数取地址,但不能对一个返回基础类型的函数取地址

给你一个例子,是谭浩强的C语言程序设计P199页的一个例子:你可以找该书来参考:

------------------------------

/使用指向函数的指针/

#include <stdioh>

int max(int x,int y)

{

int z;

if(x>y){

z=x;

}else{

z=y;

}

return z;

}

int min(int x,int y)

{

int z;

if(x<y){

z=x;

}else{

z=y;

}

return z;

}

int add(int x,int y)

{

int z;

z=x+y;

return z;

}

/第三个参数为指向返回值为整型的函数的指针/

int process(int x,int y,int(fun)())

{

int result;

result=(fun)(x,y);

printf("[%d]\n",result);

}

int main(void)

{

int a,b;

printf("输入两个整数:\n");

printf("a=");

scanf("%d",&a);

printf("b=");

scanf("%d",&b);

printf("大的数为:");

process(a,b,max);

printf("小的数为:");

process(a,b,min);

printf("和为:");

process(a,b,add);

return 0;

}

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/12156048.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存