调用指针函数 返回数组地址为什么报错大牛能解释一下吗有点理解不了,
#include<stdio.h>
int* getdata(int num) {
static int a[100];
int k;
if (num > 100)
return;
for ( k = 0; k < num; k++)
scanf("%d",&a[k]);
return a;
}
void main() {
int j,*a;
int num = 3;
a=getdata(num); //调用指针函数
for (j = 0; j < num; j++)
printf("%d", *(a + j));
}
if (num > 100)
return;这个没有返回值
a数组要改成全局变量
#include<stdio.h>
static int a[100];
int* getdata(int num) {
int k;
if (num > 100)
return a;
for ( k = 0; k < num; k++)
scanf("%d",&a[k]);
return a;
}
void main() {
int j,*a;
int num = 3;
a=getdata(num); //调用指针函数
for (j = 0; j < num; j++)
printf("%d", *(a + j));
}
getdata没有返回值啊
指针函数里面第一个return后边加一个NULL试试,我用的cobeblocks编译的,return后边不加的话会报警,其他测试都正确
如果指针函数中定义的数组不加static的话,应该是定义在栈区的,子函数结束就释放了,此时return a没有作用(内存已经释放了),这样程序就会卡死,加上static后应该是定义在堆区的,可以正常执行