#define OK 1
int RetArr(ivs_sint32_t *a)
{
a[0] = 2;
a[1] = 3;
return OK;
}
int main()
{
int out_a[2] = { 0 };
RetArr(out_a);
for (int i = 0; i< 2; i++)
{
printf("%d \n",out_a[i]);
}
return 0;
}
如上述代碼所示,首先數組out_a
在棧上申請臨時內存,並將數組地址插入函數RetArr
,因爲數組名就是指向數組的指針。而函數RetArr
內用a[i]
對數組進行修改,最終該修改可以影響函數外的數組值。因爲a[i]
和*a(i)
是一樣的。