美文网首页
c基础 - 疑难问题

c基础 - 疑难问题

作者: 世道无情 | 来源:发表于2019-03-02 05:53 被阅读0次

    前言

    变量:就是给内存地址取一个别名;

    1. 概述

    定义
    int a = 100 ;
    int b = 100 ; // a = b:表示把 b的值赋值给a;
    printf("a,b的地址分别是:%p,%p\n" , &a , &b); // a,b的地址分别是:0043F9C8,0043F9BC

    int* p1 = &a; // 把 a的地址 赋值给 变量p1
    int* p2 = &b; // 把 b的地址 赋值给 变量p2
    p1 = p2; // p1 = p2有点类似于 a=b,p1和p2只是一个变量而已,这里只是把 p2的值赋值给p1,导致p1变量的值修改了,并没有修改 a的地址
    printf("a,b的地址分别是:%p,%p\n", &a, &b); // a,b的地址分别是:0043F9C8,0043F9BC

    2. 代码如下

    #include<stdio.h>  // 导入头文件,头文件都是方法的声明。
    
    void main(){
        int a = 100;
        int b = 100;
    
        // a = b: 表示把b的值赋值给a
        printf("a,b的地址分别是:%p,%p\n" , &a , &b);  // a,b的地址分别是:0043F9C8,0043F9BC
    
    
        // 把 a的地址赋值给 变量p1,把 b的地址赋值给 变量p2
        int* p1 = &a;  
        int* p2 = &b;
    
        // p1 = p2有点类似于 a=b,p1和p2只是一个变量而已
        // 这里只是把 p2的值赋值给p1,导致 p1变量的值修改了,并没有修改a的地址
        p1 = p2; 
        printf("a,b的地址分别是:%p,%p\n", &a, &b);   // a,b的地址分别是:0043F9C8,0043F9BC
        getchar();
    }
    
    可以看到上边两次打印结果:

    第一次:a,b的地址分别是:0043F9C8,0043F9BC;
    第二次:a,b的地址分别是:0043F9C8,0043F9BC;

    a,b的地址都没有发生变化;

    相关文章

      网友评论

          本文标题:c基础 - 疑难问题

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