哈哈,这个我会,终于让我找到了个问题没怎么有人回答的了。
对于内存地址是从大往小得分配的,但是对于构造体,构造体内部的成员变量是按照定义顺序,从小往大分配的。可以借鉴mj老师说数组的时候内存的地址分配。
譬如- int arry[3] = {12,13,17};
- for (int i=0; i<sizeof(arry)/sizeof(int); i++) {
-
- NSLog(@"arry[%d]=%p",i,&arry[i]);
- }
复制代码
这段代码的执行结果就是2014-04-28 19:53:37.493 property和synthesizes[360:303]
arry[0]=0x7fff5fbff834
arry[1]=0x7fff5fbff838
arry[2]=0x7fff5fbff83c
但是你要是定义两个结构体,他们仍然和变量一样,内存从高地址往低地址分配。如下代码
-
- struct student{
- int month;
- int year;
- int day;
- };
- struct student s1 = {12,15,16};
- struct student s2={13,14,15};
- NSLog(@"s1=%p,s2=%p",&s1,&s2);
复制代码
运行结果如下,s1=0x7fff5fbff838,s2=0x7fff5fbff828
这下该懂了吧 |