Objective-C 函数返回指针
正如我们在上一章中看到的,Objective-C 编程语言如何从函数返回数组,类似于 Objective-C 中从函数中返回指针的方式。为此,您必须声明一个返回指针的函数,如下例所示:
int * myFunction() {...}
要记住的第二点是,将局部变量的地址返回到函数外部不是一个好主意,因此必须将局部变量定义为 static 静态变量。
现在,考虑下面的函数,它将生成 10 个随机数,并使用数组名返回它们,数组名表示指针,即第一个数组元素的地址。
#import <Foundation/Foundation.h>/* function to generate and return random numbers. */int * getRandom( ) {static int r[10];int i;/* set the seed */srand( (unsigned)time( NULL ) );for ( i = 0; i < 10; ++i) {r[i] = rand();NSLog(@"%d\n", r[i] );}return r;}/* main function to call above defined function */int main () {/* a pointer to an int */int *p;int i;p = getRandom();for ( i = 0; i < 10; i++ ) {NSLog(@"*(p + [%d]) : %d\n", i, *(p + i) );}return 0;}
结果如下:
2022-07-07 23:32:30.934 demo[31106] 17513484052022-07-07 23:32:30.934 demo[31106] 13613146262022-07-07 23:32:30.934 demo[31106] 8332647112022-07-07 23:32:30.934 demo[31106] 17005508762022-07-07 23:32:30.934 demo[31106] 11642192182022-07-07 23:32:30.934 demo[31106] 10835271382022-07-07 23:32:30.934 demo[31106] 14653449522022-07-07 23:32:30.934 demo[31106] 8498880012022-07-07 23:32:30.934 demo[31106] 12204949382022-07-07 23:32:30.934 demo[31106] 20956044662022-07-07 23:32:30.934 demo[31106] *(p + [0]) : 17513484052022-07-07 23:32:30.934 demo[31106] *(p + [1]) : 13613146262022-07-07 23:32:30.934 demo[31106] *(p + [2]) : 8332647112022-07-07 23:32:30.934 demo[31106] *(p + [3]) : 17005508762022-07-07 23:32:30.934 demo[31106] *(p + [4]) : 11642192182022-07-07 23:32:30.934 demo[31106] *(p + [5]) : 10835271382022-07-07 23:32:30.934 demo[31106] *(p + [6]) : 14653449522022-07-07 23:32:30.934 demo[31106] *(p + [7]) : 8498880012022-07-07 23:32:30.934 demo[31106] *(p + [8]) : 12204949382022-07-07 23:32:30.934 demo[31106] *(p + [9]) : 2095604466