CPU访问内存时需要的是地址,而不是变量名和函数名! 变量名和函数名只是地址的助记符,在编译源文件并链接到可执行文件时,它们将被地址替换。 编译和链接过程的一个重要任务是找到与这些名称相对应的地址。
#包含
//指针变量测试
//指针变量中存储的值是另一个变量的地址,改变指针变量指向另一个变量
int main ()。
int a=10;
int c=20;
//1 .打印变量的存储器地址
printf('%#x(n ),) unsigned int ) a ); //输出0XBFA0ED70
//2 .必须用*定义指针变量进行初始化。 b的值是a的存储地址
int* b=a;
//3 .打印指针变量自身的地址
printf('%#x(n ),) unsigned int ) b; //输出0XBFA0ED78
//4 .打印保存在指针变量中的值
printf('%#x(n ),) unsigned int ) b; //输出0XBFA0ED70
//5 .为指针变量赋值时,可以不带*
b=c;
//6 .通过指针变量获取数据时加*,使用指针是间接获取数据
printf(%d(n ),*b );
//7 .用指针变量修改存储器上的数据
*b=30;
printf(%d(n ),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;
*/
}