zoukankan      html  css  js  c++  java
  • 指针和引用

    code:
    int a = 5;
    int *p = &a;
    printf("%d ", p);
    printf("%d", *p);

    result:
    printf("%d ", p)输出的是a的地址
    printf("%d", *p)输出的是a值

    code:
    int a = 5;
    int *p = &a;
    printf("%d ", p);
    printf("%d ", *p);

    int c = sizeof(a);
    int &b = a;
    int d = sizeof(b);
    int e = sizeof(&b);
    int f = sizeof(p);
    int g = sizeof(*p);

    printf("%d ", &b);

    result:
    a 5 int
    +  &a   0x0016fca0   int *
      c   4   int   //sizeof(a), a是整形的数据,占4个字节,所以是4
      b   5   int &   //b就是a, a = 5,故为5
      d   4   int   //b就是a,sizeof(b)等同sizeof(a),所以是4
      e   4   int   //&b就是a的地址,同样占4个字节,所以是4
      f   4   int   //a的地址,同样4个字节,所以是4
      g   4   int   //指针是int类型,占4个字节,所以是4
    printf("%d ", &b)输出的是a的地址

    引用只是让变量多了一个名称(就好像同一个人有不同的称呼)


    变量的特点:
          1.名称
          2.类型,告诉编译器用多大内存来存储
          3.值
          4.地址

    int a = 5;
    这句干了什么:1.定义变量a;
           2.变量为整形数据,占4个字节
           3.变量值为5
           4.a在内存中有自己的地址(地址不等于变量值)

    至此,字符a有了多重意义:1.存放整形数据;2.存放的数据值为5;3.拥有自己的地址。a是这三重意义的一个标识符。


    int *p = &a;
    这句干了什么:1.定义变量p;
           2.变量p是指针;
           3.指针变量是指向一个int类型变量的地址;
           4.指针变量的值是&a;

    同样,字符p有了多重意义:1.p是指针;2.指针存放地址;3.存放的是int类型变量的首地址&a;4.拥有自己的地址。p是这四重意义的一个标识符。

    指针p是变量,它有自己的地址

    int *p = &a;(等价于 int *p; p = &a;)
    &*p:*p  = a,所以&*p相当于&a
    *&p:&p指向的数,也就是p本身,即a的地址
    如此*&p = p

    **P:*p是p指向的数据,而在上面已经对p进行了赋值,所以*p可以准确的找到所指向的数值;
    那么**p是指*p所指向的数据,通过上面知道*p是5,即在地址为5的内存里数据,显然这是有问题的

  • 相关阅读:
    利用JAVACC实现简单的四则运算
    pygeoip 以及dpkt模块 进行数据包分析与定位
    Pexpect 模块登录ssh以及pxssh模块暴力破解ssh密码
    python socket模块,nmap模块实现端口扫描器以及编码问题
    python zipfile模块和optparse模块暴力破解zip文件
    programming language part b 第一周作业
    python 实现简单爬虫
    Python 图像转字符画
    最大堆的ADT实现
    programming language part a 第五周总结
  • 原文地址:https://www.cnblogs.com/qbin/p/7058746.html
Copyright © 2011-2022 走看看