指针抽象解释

public class Question{
public static void main(String[] args) throws InterruptedException, IOException {

    int age = 10;
    System.out.println(age);    -------  10
    setAge(age);
    System.out.println(age);-------- 10

    Person person = new Person(10);
    System.out.println(person.age);---------- 10
    setAge(person);
    System.out.println(person.age); ----------- 10
}

public static void setAge(int age) {
    age = 20;
}

public static void setAge(Person person) {
    person = new Person(20);
}
static class Person {
    int age;

    public Person(int age) {
        this.age = age;
    }
}

}

指针: 数据存储在内存地址用。 如果我们想要使用该数据, 就要调用存储它的地址。 为了方便使用 ,就有了指针的概念, 用来储存要使用数据的地址。 通过这种映射关系来更便捷的操作数据

c 语言中的指针:
一个地址 0x00007ffeec9da460 名字为a的指针 存储 一个 数字为10 的地址。
如果去调用或者 使用 a 则a 代表的就是 其存储的 地址所存储的值。 如果是 赋值 = 则 说明 a 要存储 其他的地址。
不在存储 存储着10的那个地址。 也就是 指针a不在指向 10;

对象中的指针也是一个道理:
如果 一个对象指针 指向某个对象(也就是 存储该对象的地址) 则该对象的引用计数加1
。 通过调用或使用该指针来使用对象。 如果出现指针的赋值, 则说明 该指针不再指向这个对象, 则该对象的引用计
数减1。

  • (instancetype)init {
    self = [super init];
    if (self) {

      int a = 10;
      [self chageA:&a];
    

    }
    return self;
    }

  • (void)chageA:(int *)b
    {
    *b = 20;
    }

c 语言中 int * a 代表 a 指向一个指针。 a 代表的是 指针的地址。 *a 则代表 它指向的指针。
也就是 int *a = b;(b 为指针)。 则 *a 就代表 b, a 代表 b的地址。

如上代码 。 改变 a的值 为 20;

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,948评论 18 139
  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,142评论 1 32
  • 1.ios高性能编程 (1).内层 最小的内层平均值和峰值(2).耗电量 高效的算法和数据结构(3).初始化时...
    欧辰_OSR阅读 29,612评论 8 265
  • 金钢无敌阅读 144评论 0 0
  • 羽仙 世本无常,却道秋风凉。 陌上花开,幽菊无人摘。 无知己,莫悲伤; 君子行,天一方。
    清翷阅读 253评论 3 4