看书时碰到一个疑惑
各位看下 面这段代码 按道理里说 下面这个 ptr1 输出的地址应该和ptr的地址是一样的
#include<iostream.h>
void main()
{
int val = 5,a=3;
int *ptr =&val;
cout<<"val的值"<<val<<"\n";
cout<<"val的地址"<<&val<<"\n";
cout<<"ptr的值"<<ptr<<"\n";
cout<<"ptr的地址"<<&ptr<<"\n";
cout<<"ptr指向地址的值"<<*ptr<<"\n";
//ptr=&a;
int *ptr1=ptr;
cout<<"val的值"<<val<<"\n";
cout<<"ptr1指向地址的值"<<*ptr1<<"\n";
cout<<"ptr1的地址"<<&ptr1<<"\n";
//cout<<"val的地址"<<&val<<"\n";
}
运行结果却是两个指针的地址不是一样的 很疑惑 谁能帮我解答下
8 个解决方案
#1
指针也是变量,也需要有地址,这是两个指针,保存在内存中的两个地方,当然不一样
#2
int *ptr1=ptr;
这个只是使ptr1和ptr指向同一个地址,但它们本身是两个不同的变量,存储在不同的位置,所以&ptr1,&ptr不同
这个只是使ptr1和ptr指向同一个地址,但它们本身是两个不同的变量,存储在不同的位置,所以&ptr1,&ptr不同
#3
两个指针的地址是不一样的,一样的是他们的值
#4
ptr1和ptr的内容一样,也就是ptr == ptr1
ptr1/ptr自己的地址当然不一样,也就是(&ptr) != (&ptr1)
我想不明白为什么楼主认为第二种情况应该一样?
ptr1/ptr自己的地址当然不一样,也就是(&ptr) != (&ptr1)
我想不明白为什么楼主认为第二种情况应该一样?
#6
因为指针在定义是 *ptr在初始化时时用的 val 所以*ptr 的指向内容和 她的&ptr分别是Val的
那么我现在用 ptr出初始化指针 *ptr1 那么是不是 *ptr1 和&ptr1 和 应该和ptr是一样咧????
但现在指向的值是一样 地址却不一样
#7
我是用ptr 去初始化指针*ptr1 按理说连个指针的地址和值应该都是一样的呀
但现在只是值一样 地址却不一样... 有点疑惑...
#8
正解 .... 非常感谢...
#1
指针也是变量,也需要有地址,这是两个指针,保存在内存中的两个地方,当然不一样
#2
int *ptr1=ptr;
这个只是使ptr1和ptr指向同一个地址,但它们本身是两个不同的变量,存储在不同的位置,所以&ptr1,&ptr不同
这个只是使ptr1和ptr指向同一个地址,但它们本身是两个不同的变量,存储在不同的位置,所以&ptr1,&ptr不同
#3
两个指针的地址是不一样的,一样的是他们的值
#4
ptr1和ptr的内容一样,也就是ptr == ptr1
ptr1/ptr自己的地址当然不一样,也就是(&ptr) != (&ptr1)
我想不明白为什么楼主认为第二种情况应该一样?
ptr1/ptr自己的地址当然不一样,也就是(&ptr) != (&ptr1)
我想不明白为什么楼主认为第二种情况应该一样?
#5
#6
因为指针在定义是 *ptr在初始化时时用的 val 所以*ptr 的指向内容和 她的&ptr分别是Val的
那么我现在用 ptr出初始化指针 *ptr1 那么是不是 *ptr1 和&ptr1 和 应该和ptr是一样咧????
但现在指向的值是一样 地址却不一样
#7
我是用ptr 去初始化指针*ptr1 按理说连个指针的地址和值应该都是一样的呀
但现在只是值一样 地址却不一样... 有点疑惑...
#8
正解 .... 非常感谢...