c基础 - 疑难问题

2019-03-02  本文已影响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的地址都没有发生变化;

上一篇 下一篇

猜你喜欢

热点阅读