iOS-alloc对象指针与地址

时间:2021-08-01
本文章向大家介绍iOS-alloc对象指针与地址,主要包括iOS-alloc对象指针与地址使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

以一个最简单的尝试验证:指针本身是一个变量,存放持有(指向)的内存地址。

        Data *p1 = [Data alloc];
        Data *p2 = [p1 init];
        Data *p3 = [p1 init];
        NSLog(@"%@",p1);
        NSLog(@"%@",p2);
        NSLog(@"%@",p3);

会输出什么?

指针的值,也就是指针指向的内存地址。

如果变一下呢?

        Data *p1 = [Data alloc];
        Data *p2 = [p1 init];
        Data *p3 = [p1 init];
        NSLog(@"%@ - %p",p1,p1);
        NSLog(@"%@ - %p",p2,p2);
        NSLog(@"%@ - %p",p3,p3);

以%p输出,p1、p2、p3结果会不一样吗?

 

结果是一样的。同样都是输出指针的值。

再换一下呢?

        Data *p1 = [Data alloc];
        Data *p2 = [p1 init];
        Data *p3 = [p1 init];
        NSLog(@"%@ - %p - %p",p1,p1,&p1);
        NSLog(@"%@ - %p - %p",p2,p2,&p2);
        NSLog(@"%@ - %p - %p",p3,p3,&p3);

这下还一样吗?

 

终于不一样了!

原因是最后是取指针地址,输出的是指针变量本身的地址啦。可以看到指针是在栈上创建的,其每个大小为8个字节(64位下)。

原文地址:https://www.cnblogs.com/pionice/p/15086865.html