正如指向数组的指针可以传递给函数一样,指向数组的指针也可以返回,如下程序所示:
int * get_evens();
int main() {
int *a;
int k;
a = get_evens(); /* 得到前5个偶数 */
for (k = 0; k < 5; k++)
printf("%d\n", a[k]);
return 0;
}
int * get_evens() {
static int nums[5];
int k;
int even = 0;
for (k = 0; k < 5; k++) {
nums[k] = even += 2;
}
return (nums);
}
请注意,声明指针而不是数组来存储函数返回的值。还要注意,当从函数中传递局部变量时,需要在函数中将其声明为静态的。
记住a[k]与*(a+k)是相同的。