美文网首页
C++自学计划-指针(简版)-12

C++自学计划-指针(简版)-12

作者: 你缺少想象力 | 来源:发表于2018-12-18 11:43 被阅读0次

    标题简版,为何,因为据我所知,指针是个比较难懂的东西,老实说,我不是很喜欢给知识标记难学易学的标签,因为这样会打击我的自信心,所以就来学习这个正常难度的指针吧。所以该篇文章的长度要大于其他自学计划的长度。

    感觉不是像int i那么容易让人理解,所以这次写的详细点。

    知识点1: 一个运行的程序,这个程序运行的部分都在内存中。
    知识点2:电脑会运行很多程序,但内存就那么点,而且只有在运行的部分才在内存中

    通过以上两点,结论:内存中有着大量的“程序碎片”

    知识点3:内存大小是有限的,甚至远远小于正在运行的程序的总大小
    知识点4:程序的运行非常不确定,可能上一秒在运行这个程序,下一秒就运行另一个程序了

    结论:内存中的数据分布十分不均匀,如果关闭一个大型程序,内存中会留下大量空闲区域,所以内存中的数据不可能乖乖的顺序排列

    既然已经不能乖乖的顺序排列了,不如就直接全部打散,将程序撕成分子级别的大小,丢进内存的格子里面,为了快速找到这些分子,需要给分子定一个标签,知道他在哪行哪列。但是这些标签,也需要放在格子里面,所以这些标签就有了标签

    为了更加友好的理解,不如给这些分子取一个名字,叫变量(并不准确,但便于理解),那些标签,不如就叫地址。

    先向内存申请一个格子

    int a;
    

    现在这个格子便有了一个标签 (地址),然后把数据放在格子里:

    int a;
    a = 10;
    

    怎么看标签(地址)呢:

    int a = 10;
    std::cout << &a << std::endl;
    

    结果:

    0x7ffeef7f34fc
    

    讲了那么多废话,现在开始讲指针。

    上面说到,那些标签,也要有个格子放,而那些格子又有标签。

    那些指向标签的标签,不如就叫指针吧。(有点难理解哈)

    这样理解好了,先不看标签对标签,先看标签对格子,格子里面对东西总是会变动的,因为同一个格子可以存放不同的东西。

    那么我们来看标签对标签,为了分辨二者关系,不如就叫,标签格子对标签。根据格子对标签,我们得到,标签不变,格子中对数据要变。那标签格子对标签就是,标签格子里面对标签要变,但是标记标签格子对标签不变。(多读即便并画图,应该能分析出来)

    这个标签格子对的这个标签,就是指针。往大了说,就是指针存放变量地址

    如何声明一个指针标签的格子

    int *p;
    

    如何在这个格子里面放标签(地址)

    int a = 10;
    int *p = &a;
    

    怎么使用指针,感受一下

        int a = 10;
        int *c = &a;
    
        std::cout << c << std::endl;
        std::cout << *c << std::endl;
    

    运行结果:

    0x7ffeedfdb50c
    10
    

    就得到数据,不加就是地址。加上得到变量的值,不加得到变量的地址,大概聊到这里。

    相关文章

      网友评论

          本文标题:C++自学计划-指针(简版)-12

          本文链接:https://www.haomeiwen.com/subject/guukkqtx.html