我不明白爲什麼ARR沒有指向我已在功能測試中取得的數組:定義函數內數組指針
void test(int *arr)
{
int tmp[] = {2,4};
arr = tmp;
printf("%d %d\n",arr[0],arr[1]);
}
int main()
{
int *arr;
test(arr);
printf("%d %d\n",arr[0],arr[1]);
return 0;
}
當我運行這個程序我:
2 4
17744 786764
arr是指針,爲什麼不更新值?
更新: 我現在看到我誤解了很多關於指針和函數本地變量的問題。已經更新我的小笨笨的腳本,以適用的東西:
#include <stdio.h>
#include <stdlib.h>
void test(int *arr){
arr[0] = 123;
arr[1] = 321;
printf("%d %d\n",arr[0],arr[1]);
}
int main()
{
int arr[2];
test(arr);
printf("%d %d\n",arr[0],arr[1]);
return 0;
}
因爲你是按值傳遞指針 - 所以你只能改變它在你的'test'功能的本地副本... – dragosht
以及如何將arr'的''在副本main'得到更新? –