Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/154.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 将指针值指定给另一个指针值。我做错了吗?_C++_Pointers - Fatal编程技术网

C++ 将指针值指定给另一个指针值。我做错了吗?

C++ 将指针值指定给另一个指针值。我做错了吗?,c++,pointers,C++,Pointers,我试图将一个动态数组的地址分配给另一个动态数组,即我拥有的两个指针的地址: Someclass *pointer = new Someclass[10]; Someclass *pointer2 = new Someclass[10]; 现在我想将指针的地址分配给指针2: pointer2 = pointer; 测试地址是否相同: cout << &pointer2 << endl; cout << &pointer <&

我试图将一个动态数组的地址分配给另一个动态数组,即我拥有的两个指针的地址:

 Someclass *pointer = new Someclass[10];

 Someclass *pointer2 = new Someclass[10];
现在我想将指针的地址分配给指针2:

 pointer2 = pointer;
测试地址是否相同:

 cout << &pointer2 << endl;
 cout << &pointer << endl;
所以他们的地址不一样。有什么好处?我不是通过键入pointer2=pointer将它们分配到同一个地址吗?如果不是,那么这句话是怎么说的

我尝试用一个没有类和对象的简单程序来实现这一点:

 int main()
 {
int * pointer1;
int * pointer2;

pointer1 = pointer2;

cout << &pointer1 << endl;
cout << &pointer2 << endl;
}
intmain()
{
int*pointer1;
int*pointer2;
指针1=指针2;
cout您正在打印指针的地址,而不是指针指向的地址

试试这个:

cout << pointer2 << endl;
cout << pointer << endl;
cout您正在打印指针的地址,而不是指针指向的地址

试试这个:

cout << pointer2 << endl;
cout << pointer << endl;

它们是不同的对象,所以它们的地址不同。顺便说一句,你有内存泄漏。试着打印出
&
.P.S你的头像图片规则!!!如果你这样做
int i=0;int j=1;i=j
你希望
&i
&j
变得相同吗?它们是不同的对象,所以它们的地址不同艾伦特。顺便说一句,你有内存泄漏。试着打印出
&
.P.这是你的头像图片规则!!!如果你这样做了
int i=0;int j=1;i=j
你希望
&i
&j
变得一样吗?哇,非常感谢你,我刚才有点困惑。很抱歉问这么愚蠢的问题!只是想弄清楚…指针有一个地址ess就像任何变量一样,它也指向另一个地址,而这个地址就是指针的值?是吗?所以基本上指针可以有两个地址,一个是指针本身存储的地址,另一个是指针指向的地址(除非它是空指针)?是的,但认为它是“有两个地址”。指针就像任何变量一样有一个地址。和其他变量一样,它有一个值。对于整数来说,值是一个数字,但对于指针来说,它是一个地址。但它没有两个地址。它有一个地址,它有一个值(这是一个地址)。谢谢。我意识到它的措辞像“它有两个地址”"它的地址和内存中的所有变量一样,但它的特殊之处在于,它的值是您分配给它的另一个地址,如果指针为空,则为0。但这是否意味着指针可以将自身的地址作为其值?可能吗?@OFELIAVANALhard指针通常不能保存自己的地址地址,因为类型系统为其提供了不同的类型(指向类型的指针)。但是你可以通过强制转换将其插入。
void*
是一个例外,它可以指向自身。哇,太感谢你了,我刚刚被弄糊涂了。很抱歉问这么一个愚蠢的问题!只是要澄清一下……指针有一个地址,就像任何变量一样,它也指向另一个地址,而那个地址就是指针的值?是吗?指针基本上可以有两个地址,一个是指针本身存储的地址,另一个是指针指向的地址(除非它是空指针)?是的,但如果认为它“有两个地址”会让人困惑.指针,就像任何变量都有一个地址。和其他变量一样,它也有一个值。对于整数来说,值是一个数字,但对于指针来说,它是一个地址。但它没有两个地址。它有一个地址,它有一个值(这是一个地址)。谢谢。我意识到它的措辞就像“它有两个地址”它的地址和内存中的所有变量一样,但它的特殊之处在于,它的值是您分配给它的另一个地址,如果指针为空,则为0。但这是否意味着指针可以将自身的地址作为其值?可能吗?@OFELIAVANALhard指针通常不能保存自己的地址地址,因为类型系统给它一个不同的类型(指向指向类型的指针)。但您可以通过强制转换将其插入。
void*
是一个例外,它可以指向自身。