错误程序
main() { int a[6] = {0},i = 6; a = array(i); } int * array(int i) { int n, a[10]; for(n = 0;n < i; n++) a[n] = n;
return a; }
语法没有错误
运行程序后a[6]还是值均为0 的数组。
出错原因:
局部变量在函数返回后自动释放所占的内存,此时系统返回的是一个任意的内存地址。
正确的做饭是把想要得到的数组作为实参传入函数,再让函数对该数组进行修改。
修改程序:
得到正确的结果main() { int a[6] = {0},i = 6; array(a, i); } int * array(int * a, int i) { int n; for(n = 0;n < i; n++) a[n] = n; }