在我嘗試學習一些關於指針的知識時,我嘗試創建一個程序,爲給定大小的數組分配內存(其大小由常量ARR_SIZE
的值定義),並將該數組的元素打印到安慰。爲什麼我的程序打印出奇怪的數組值?
我無法理解我得到的結果...例如,當我運行下面顯示的代碼時,我得到了{0, 4206628, 4206628, 3, 4, 5, 6, 2686696, 8, 9}
,這對我來說絕對沒有意義。我想知道這種行爲的原因是什麼以及爲了獲得預期結果需要修改什麼。
#define ARR_SIZE 10
void print_array(int loc);
int memory_alloc();
int main()
{
int array_loc = memory_alloc();
print_array(array_loc);
return 0;
}
void print_array(int loc)
{
int i = 0;
int *arr_ptr;
arr_ptr = loc;
while(i < ARR_SIZE)
{
printf("%d\n", *arr_ptr);
*(arr_ptr++);
i++;
}
}
int memory_alloc()
{
int array[ARR_SIZE];
int i = 0;
for(i; i < ARR_SIZE; i++)
{
array[i] = i;
}
return &array;
}
你看過你的編譯器輸出嗎?如果它是一半的,它應該告訴你什麼是錯的。 – 2014-09-11 10:28:36