我正在尝试编写一个程序,该程序调用一个函数,该函数创建一个包含随机数的数组,然后对它们进行排序。完成后我想将一个指向数组的指针返回给main函数。然后我想打印数组。如果我只是在数组中打印一个值,一切正常。但是,如果我打印多个值,我会得到一些其他值。这是主要功能:
int * createArr(){
int arrLenth = 100;
int arr[arrLenth];
int i, j, temp, pos = 0;
/*ASSIGNING ARRAY VALUES */
for(i=0;i<arrLenth; i++){
arr[i] = rand() % 900;
}
/* SORTING ARRAY */
for(i = 0; i < arrLenth; i++){
for(j = 0; j < arrLenth; j++){
if(arr[j]>arr[j+1]){
temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
/* PRINTING ARRAY*/
for(i=0;i<arrLenth; i++){
printf("%d, ", arr[i]);
}
int *parr = arr;
//printf("\n%p", parr);
return parr;
}
int main() {
int *p = createArr(); //pointer to the array
printf("\n%d", *(p+1));
printf("\n%d", *(p+1));
return 0;
}
这给了我输出:
45 (which is correct)
1771768448 (which is not correct)
造成这种情况的原因是什么?我打印两次完全相同的线,但得到不同的输出。还告诉我,如果你需要看到我创建数组的功能,我觉得不需要它,因为那里的一切都很好。