方法调用中的数组问题
1.我们经常会在一个方法中定义一个数组,并通过指针返回这个数组。但值得注意的是,我们不能简单的使用int []定义,而是要使用malloc函数创建内存空间。原因是int数组定义的变量,在方法调用后会被回收。这会导致在方法调用结束后,我们无法使用这个数组。具体请看代码:
int* randNumber(){
int arrays[] = {1,2,3,4,5};//定义一个数组
return arrays;//这里返回后,只有arrays[0]可用
}
int main(void ){
int* p = randNumber();//在这里,我们不能使用指针p遍历出1,2,3,4,5,原因是在randNumber调用结束后,arrays已经被回收了,只有指针指向的第一个元素没有被回收
return 0;
}
正确的做法是,我们要使用int* arrays = (int*)malloc(sizeof(int)*size)
来创建一个数组。在使用完毕后,记得回收