
比如
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);
}
我改了一下你的程序,不太好看,只是给你看看怎么返回指针。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)