Suppose
第一个案例
int a;
int *p= &a ; it works no error
第二种情况
long int a;
long int b;
b = & a; it wont work
我们大多数人都说 b 是变量而不是指针。但请看下面的内容。
所以问题是如果&a
返回的地址是无符号整数,那么为什么我们不能将其分配给普通变量呢?但为什么只针对指针呢?
见下文
b = (unsigned int) &a ; it works after typecasting though its not practicable.
如果地址是整数格式,那么为什么不使用无符号或长整数保存它?我想,这背后一定有什么不可告人的秘密。有谁能透露一下吗?我的想法是,指针必须在内部做一些事情,但我想知道它会是什么以及为什么普通变量不能这样做。
感谢您的所有回答,但实际的问题到底是什么&a
回报?是否为整数值?如果它是整数为什么变量不能保存它? long int a =65535 \valid 如果地址 b 的值为 65535 为什么不 int a= &b
我不担心将其用作指针,请问题是关于仅保存值。不尊重地址。人们说 32 位或 64 位,我并不担心。如果地址是整数,为什么无法保存地址?
我的意思是为什么我们不能分配值,我并不是说将指针的属性分配给变量,而是只是分配值而已
a=65535
b = a \\ works it assigns b - 65535
&a=65535
b = & a \\ doesn't work, if address is a some integer value,why we can't store it in a variable?
以 16 位为例,普通指针(地址)大小为 2 个字节,变量大小为 2 个字节,如果地址是整数值,为什么我们不能将地址存储在其他变量中,这就是我的问题,我发现很多答案,例如 ++ 它增加 4到指针和值 1 到变量,不用担心只是分配值是更重要的问题。
b = & a ; address of a is 4000
++b ; becomes 4001 thats it,thats not a problem