指针数组 和 数组指针 的本质区别
例如NSArray *arr=[NSArray array]; //这是定义一个数组,那么arr就是数组指针,代表数组的地址;
很明显的特征,*x,凡是用*号访问的,肯定都是地址,这里也不例外,只不过arr是数组的指针。
指针数组,代表存储一组指针的数组。
上大学学C语言时,老师的一句话就让我明白什么是指针了----》【指针就是地址】
所以这里,指针数组,存储的是指针,也就是地址
例如:
- //定义三个字符串对象,其中string1,string2,string3就是字符1,2,3的地址,也就是他们的指针
- NSString *string1=@"字符1";
- NSString *string2=@"字符2";
- NSString *string3=@"字符3";
- //定义一个数组,把他们保存到里面,则存储的是地址,也就是指针,所以是指针数组
- NSArray *arr1=[NSArray arrayWithObjects:string1,string2,string3, nil];
- //不是对象的,是基本数据类型的也可以
- int a=1;
- int b=2;
- //定义一个数组保存a,b的指针,也就是地址,那这里就是一个指针数组
- NSArray *arr2=[NSArray arrayWithObjects:&a,&b, nil];
- //由于取出的值是指针,所以想要打印a,b的值,需要用*号访问
- NSLog(@"a=%d,b=%d",*arr2[0],*arr2[1]);
复制代码 |