正如指向数组的指针可以传递给函数一样,指向数组的指针也可以返回,如下程序所示:
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)是相同的。