zoukankan      html  css  js  c++  java
  • 01深入理解C指针之---指针含义符号

    该系列文章源于《深入理解C指针》的阅读与理解,由于本人的见识和知识的欠缺可能有误,还望大家批评指教。

    1、指针的含义:

    指针本身也是变量,与其他一般变量不同的是:指针变量中没有存储具体类型的数据,而是存储这一串16进制的值。这串值,就是内存的地址。计算机的OS运行时,管理内存过程中,为了高效管理内存,为内存进行编号,以字节为单位编号。而内存的地址存放到变量中。这样看来,指针的地址也是地址,指针变量中的值也是地址。

    2、*符号的作用

    (1)声明指针变量使用

    (2)解指针变量,取出指针值中对应地址的值

    3、&符号的作用

    取变量的地址

    请看例子,非常简单,但是说明的问题还是很多:

     1 #include <stdio.h>
     2 
     3 int main(int argc, char *argv)
     4 {
     5     int num = 10;
     6     int *numptr;
     7     numptr = &num;
     8     printf("Address num: %p, value num: %d ", &num, num);
     9     printf("Address numptr: %p, value numptr: %p, value *numptr: %d ", &numptr, numptr, *numptr);
    10 
    11     return 0;
    12 }

    第一次运行结果:

    Address num: 0x7fffbfa6236c, value num: 10
    Address numptr: 0x7fffbfa62360, value numptr: 0x7fffbfa6236c, value *numptr: 10

    第二次运行结果:

    Address num: 0x7ffdbff4ff0c, value num: 10
    Address numptr: 0x7ffdbff4ff00, value numptr: 0x7ffdbff4ff0c, value *numptr: 10

    (1)声明一个变量num,实际在计算机中num是代表地址,而地址就更加具体了,变量名只是让人看起来更加习惯,在计算中是不存在这个num变量的,很明显可以看出两次运行的结果中同样的num,地址是不一样的,但是这不会影响这个变量名为num,就向人的名字一样,取名字时都是可以随便取的一样。

    (2)虽然两次的地址不一样,但是由于使用了相同的变量名num,所以使用变量访问是得到的就是同样的值为10

    (3)例中我门使用了&取地址符号,顺利得到了num的地址,两次都不一样

    (4)我们观察numptr的指针变量时,发现由于有第7行代码的作用,两次运行中,numptr的值,也就是指针代表的地址与num的地址是一样的,如果我们直接使用指针变量的变量名就是得到了num的地址,如果想进一步取得num的值,就须要*numptr,这时,*符号的作用就是取指针变量值(地址)对应的值,因此得到了num的值


  • 相关阅读:
    前端接收后端返回数据中【后端返回数据
    JavaSE 文件部分常用功能示例
    springboot controller路径名设置
    springboot 文档学习记录
    controller 方法路径、参数的使用
    Vue制作音乐播放器_基于网易云音乐的接口
    Java复习_枚举
    Java复习_static用例_单例模式_懒汉式
    c++和python中的sort
    通过portainer来管理容器和镜像
  • 原文地址:https://www.cnblogs.com/guochaoxxl/p/6823194.html
Copyright © 2011-2022 走看看