如何在C中调用函数返回指针

如何在C中调用函数返回指针,第1张

设置函数返回值为指针类型就可以了。 

比如

int  func(int a, int n)

{

    return a+n;

}

这个函数功能为返回a[n]地址, 没什么意义,只是作为举例。

然后

int main()

{

    int a[5]={1,2,3,4,5};

    int p = fun(a,2);

    printf("%d\n",p);

}

打印的就是a[2]

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

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

指针可以返回,但是要注意函数内部的数组用指针返回后,到了函数外面,这个数组已经被释放了。所以是个野指针,用了就死机!这种情况可以动态申请一段内存,比如malloc函数,用完后再用free函数释放内存。

#include<stdioh>

#include<stdlibh>

float Input(int& len)

{

int length;

int i;

float a;

printf("Enter a number to sort numbers:\n");

scanf("%d",&length);

len = length;

a=(float )malloc(lengthsizeof(float));

printf("Enter the number %d (Digital separated by whitespace or the end of line):\n",length);

for(i=0;i<length;i++)

{

scanf("%f",&a[i]);

}

return a;

}

void Sort(float a, int len)

{

int i,j,length;

length = len;

for(i=0;i<length-1;i++)

for(j=0;j<length-1-i;j++)

if(a[j]>a[j+1])

{

a[j]=a[j]+a[j+1];

a[j+1]=a[j]-a[j+1];

a[j]=a[j]-a[j+1];

}

}

void main()

{

float date = NULL;

int len;

int i;

date = Input(len);

Sort(date, len);

printf("This %d number from small to large order is the order of:\n",len);

for(i=0;i<len;i++)

printf("%-72f\n",date[i]);

free(date);

}

我改了一下你的程序,不太好看,只是给你看看怎么返回指针。

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

原文地址:https://54852.com/langs/13492714.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-09-01
下一篇2025-09-01

发表评论

登录后才能评论

评论列表(0条)

    保存