漫步IOS--结构体指针、结构体数组指针,结构体Char数组声明

1 结构体指针

结构体指针也和正常的指针是一样的使用,只是多了一种调用方法

point m={1,0},n={4,0};
point *p_m ,*p_n;
point是一个结构体,调用的时候先声明一个对应类型的指针变量,然后再像正常的指针调用即可。只是在调用的时候可以多了一种新的调用方式如下

p_m->x
另外值得一提的是:原先的那种方法在作为结构体调用的时候会出现错误,即下面的代码是会报错的。
*p.x
为什么呢?因为运算符的优先级问题。所以在这里的调用需要加上括号。如下:

(*p).x


2 结构体数组指针

结构体数组也和之前的数组调用一样,先声明一个数组的一个元素的类型的变量,然后不停的去进行读取处理就是了。只是有一点需呀注意。

在进行指针数组的声明,虽然是声明的对应类型的变量,甚至有时候声明的是字符数组类型的指针,但是你对一个指针数组进行sizeof()的时候,他的大小却出乎意料。

int *pa[] = {123,234,234,123};
printf("%d",sizeof(pa));

一个int类型的变量长度为4个字节,而输出的结果却是32,也就是说一个元素的长度是8.这明显是不符合我们的推理的。然后发觉把数组的类型从short到long全部换了个遍,依旧是32.那么为题来了,为什么?因为不管声明的是什么类型的指针数组,在存储的时候都是存储的指针,指针的类型是在根据地址取值进行定长内存读取的时候才会用到。这里的指针的长度和操作系统有关,MAC系统的指针的长度是8.所以,在这里也就出现了一个小技巧:如果想知道一个指针数组的长度,可以直接用sizeof()/8.


3 结构体char数组声明

在结构体中声明字符数组,必须在声明的时候指定数组的大小。

你可能感兴趣的:(漫步IOS--基础语法篇)