zoukankan      html  css  js  c++  java
  • [日常] C语言中指针变量

    CPU 访问内存时需要的是地址,而不是变量名和函数名!变量名和函数名只是地址的一种助记符,当源文件被编译和链接成可执行程序后,它们都会被替换成地址。编译和链接过程的一项重要任务就是找到这些名称所对应的地址。

    #include <stdio.h>
    //指针变量测试
    //指针变量存储的值是另一个变量的地址,也就是说改指针变量指向了另一个变量
    int main(){
            int a=10;
            int c=20;
            //1.打印出变量的内存地址
            printf("%#X 
    ",(unsigned int)&a);//输出 0XBFA0ED70
     
    
            //2.定义指针变量时必须带*,定义并初始化,b的值是a的内存地址
            int* b=&a;
    
            //3.打印出指针变量本身的地址
            printf("%#X 
    ",(unsigned int)&b);//输出 0XBFA0ED78
    
            //4.打印出指针变量存储的值
            printf("%#X 
    ",(unsigned int)b);//输出 0XBFA0ED70
        
    
            //5.给指针变量赋值时,不用带*
            b=&c;
    
            //6.通过指针变量获取数据时要带*,使用指针是间接获取数据
            printf("%d 
    ",*b);
    
            //7.通过指针变量修改内存上的数据
            *b=30;
            printf("%d 
    ",c);
    
            //8.关于*和&的谜题
            int d=40;
            int* e=&d;
            int f=*&d;//等价于 *(&d) ==> d
            int* g=&*e;//等价于 &(*e) ==> e
    
            /** 
            对星号*的总结:
    
            在我们目前所学到的语法中,星号*主要有三种用途:
            表示乘法,例如int a = 3, b = 5, c;  c = a * b;,这是最容易理解的。
            表示定义一个指针变量,以和普通变量区分开,例如int a = 100;  int *p = &a;。
            表示获取指针指向的数据,是一种间接操作,例如int a, b, *p = &a;  *p = 100;  b = *p;
            */    
    }
    

      

  • 相关阅读:
    什么叫TLD、gTLD、nTLD、ccTLD、iTLD 以及几者之间的关系
    socket
    windows下codeblocks报错undefined reference to `WSAStartup@8'|
    Codeforces 467C George and Job | DP
    51Nod 1049最大子段和 | 模板
    51Nod 最大子矩阵和 | DP
    AtomicInteger
    sun.misc.unsafe
    CAS
    java中的四种引用
  • 原文地址:https://www.cnblogs.com/taoshihan/p/9209094.html
Copyright © 2011-2022 走看看