#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)
是一样的。