第1个回答 2018-08-02
从基础讲
第一,指针就是地址
第二,指针变量是用来专门储存 其他变量的 地址 的变量
指针变量p的值是变量a的地址
而指针运算符“ * ”是为了表示指针变量和它所指的变量之间的关系
*p等价于变量a,就是说比如 int a=3; p=&a; 当输出*p的值为a的值也就是3;
也就是说程序中赋值过程的a=3;与*p=3;是等同的
p=&a;是使p这个指针变量指向a,因为我们要把键盘输入端的字符存到变量a所在的存储空间,而不是变量a存储的数据所指向的内存空间~所以写做scanf("%d",&a);// ”&“是以一个操作符,可以获取变量a所在的存储空间位置,而不是变量a所在存储空间中存储的数据.也就是所谓的地址=指针
而你所说的把(某指针变量)所指存储单元的内容赋给(变量)这种功能的表达式应该是
(某变量)=*(某指针变量)举例: b=*a
也就是比如
变量a=3 a的地址(指针)为1000;
p=&a 就是指针变量p的值变为变量a的地址,也就是1000;此时的p 是指针变量
p=*a 就是把变量a的值3赋给变量p,也就是p=3; 此时的p是变量而不是指针变量