数组的内存地址

时间:2013-12-13 07:03:02

标签: ios objective-c arrays

请帮帮我。我对这个记忆地址感到很困惑。

    NSMutableArray *arr = [[NSMutableArray alloc]initWithObjects:@"1",@"2",@"3", nil];

    NSLog(@"Address of array =  %p",&arr);
    NSLog(@"Array's element Address =  %p",arr);
    NSLog(@"Address 0th element %p",[arr objectAtIndex:0]);

    NSLog(@"Address of array =%lx",(long)&arr);
    NSLog(@"Array's element Address =  %lx",(long)arr);
    NSLog(@"Address 0th element %lx",(long)[arr objectAtIndex:0]);

    **Output**

    Address of array =  0xbfffd804
    Array's element Address =  0x866f340
    Address 0th element 0x4748
    Address of array =bfffd804
    Array's element Address =  866f340
    Address 0th element 4748

我得到了这个输出,但是我对第二和第三输出感到困惑,因为根据我的知识,第二和第三输出应该是相同的。所以请任何人都可以解释我。提前谢谢。

1 个答案:

答案 0 :(得分:4)

如果这是一个普通的C数组,你可能是对的,但你的arr是一个类的实例,而不是NSMutableArray用来存储其对象的任何数据结构的基地址(可能不是一个普通的C数组,或者)。