#include<stdio.h>
int main(){
/*这是一个普通的int的变量,
将一块随机的地址赋值给b,
地址里的数值是随机的。
(编译器不同值会有相应的变化,我的编译器返回的是0,但不保证所有的编译器都为零)
*/
int b;
/*显示变量的值(此时未赋值)
(编译器不同值会有相应的变化,我的编译器返回的是0,但不保证所有的编译器都为零)
*/
printf("赋值前b=%d\n",b); //赋值前b=0
//%p以16进制返回数值,也可以用%d十进制返回
printf("赋值前b的地址=%p\n",&b); //赋值前b的地址=0x16b4ef588
//为变量b赋值,将21写入到b也就是0x16d103588这个地址上
b=21;
//显示变量的值(此时已赋值,值为21)
printf("赋值后b=%d\n",b); // 赋值后b=21
//显示b的地址(&为地址符)
printf("赋值后b的地址=%p\n",&b); //赋值后b的地址=0x16b4ef588
//建立int型变量a并把10赋值给a
int a=10;
//打印a的值和地址
printf("a=%d\n",a); //a=10
printf("a的地址=%p\n",&a); //a的地址=0x16b4ef584
// 1、建立指针变量*pointA,此时指针指向的地址为0x0
int *pointA;
printf("指针的默认地址=%p\n",pointA);//指针的默认地址=0x0
// 2、将a的地址赋值给pointA指针
pointA=&a;
//上面的两步可以合并为 int *pointA=&a;
printf("pointA指向的变量地址=%p\n",pointA); //pointA的地址=0x16b4ef584
printf("a的地址=%p\n",&a); //a的地址=0x16b4ef584
printf("pointA的地址=%p\n",&pointA); //pointA的地址=0x16b4ef578
printf("pointA指向的值=%d\n",*pointA); //pointA指向的值=10
/*
指针共三层
*pointA: 带星号对应的是变量的值
pointA: 对应的是变量的地址
&pointA: 对应的是指针的地址
*/
return 0;
}
|