纯手机编写 多多包涵。
先把结果写在前面:
1,指针是地址,地址就是指针
2,数组名是数组变量名,左值是数组地址(指针)本身
3,数组名是首元素地址,也不是首元素地址(引新规)
4,变量名左值就是地址本身,右值是数据。
愿意看的同学往下看。 欢迎批评指正,不欢迎辱骂
在这之前,问问大家,如何理解=等号的。
对我而言,也许c++并不是这样定义的。
1,=等号的用法:
(左值)地址=数据(右边),
对编译器来说 把 右边数据 写入 左边地址。
什么是右值:左值。
变量名= 在等右边或没有等号时,是右值
变量名=在等号左边,是左值。
变量名是右值时,是数据的别名
变量名是左值时,是地址的别名。
问题一:
1,指针是什么?指针是地址吗?
2,指针有地址吗?
我的答案:
1, 指针就是地址。
理由
int a=10; // 变量a 假设地址是a01
double b=10.0;// 变量b 假设地址是b02
int *pa=&a; // 变量pa 假设地址是pa03
double *pb=&b; //变量pb 假设地址是pb04
变量a,b 分别是 整型类型 浮点型类型。
a存放整型数据 b存储浮点型数据
pa和pb是指针类型,那他应该存放的指针类型数据
pa pb存储的是地址数据。那地址是指针类型。
结果:地址就是指针,指针就是地址
答案2:
指针(地址)没有地址,地址没有地址
地址变量pa,pb有地址,指针变量是数据类型。
哈哈 你骗人
根据左值原则 a b 分别代表地址 a01 b02
你说地址没有地址 那么 &a &b 是什么鬼?
如果我告诉你&a &b就是他们本身,就是地址(指针)
a01 b02本身,分别是10和 10.0的地址
反过来说10和10.0的地址不是&10和&10.0
对不起 &10和&10.0编译器不认识。
那么a是啥玩意?b又是啥玩意?作为左值
a就是a01的别名 b是b02的别名
a就是指针(地址a01) b就是指针(地址b02)
还记得我们说=号