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的地址都没有发生变化;