C语言 带指针的函数 如何让它return指针?

2024-11-25 17:42:00
推荐回答(5个)
回答1:

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

#include
#include

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(length*sizeof(float));
printf("Enter the number %d (Digital separated by whitespace or the end of line):\n",length);
for(i=0;i {
scanf("%f",&a[i]);
}
return a;
}

void Sort(float * a, int len)
{
int i,j,length;
length = len;
for(i=0;i for(j=0;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 printf("%-7.2f\n",date[i]);
free(date);
}
我改了一下你的程序,不太好看,只是给你看看怎么返回指针。

回答2:

排序函数:
参数1 -- 数组a指针
参数2 -- 数组长度
排序
无需返回a的指针,因为排序已经对数组a的元素进行操作,函数运行完a就是排序好的。

回答3:

int * GetNum(int * arr, int len)
{
for (i = 0; i < len; i++)

{
scanf("%d", arr + i);

}

return arr; //其实这里不需要返回地址,函数返回值可以是void,为了说明问题加上这一步

}

回答4:

把a作为参数传指针进函数里。另外a在函数外分配内存并释放,不要在函数里分配。遵循谁分配,谁释放的原则。

回答5:

1、C语言属于高级编程语言。在C语言中一个函数不能返回局部地址即指针。
2、例如:
int * func(void)

int a= 10;
int *p = &a;
return p;

a变量的区域是func()函数,在函数内有效,出了函数就释放了,此时p指向的是一个未知
地址,属于错误用法。
正确用法
int *p = NULL;
int * func(void)

p = malloc(sizeof(int));
if(p!=NULL)
{
*p = 10;
}
return p;