c++两个分别指的数组的指针能直接相等吗,然后两个数组里的值也都相等?

如题所述

所谓数组就是内存里的一块地方。
所谓你用一个指针指向它,就是在指针里存那块地方的地址。
现在你开了两个区域,并用两个指针分别指向它们。然后把一个指针的值赋予另一个指针,那么这两个指针指向同一块区域,另一块区域就找不着了,虽然还在那里。

所以你的问题就很有问题。不应该说“指针直接相等”,而应该说给另一个指针赋值。“相等”是判断,而“赋值”是动作。

你想把一个数组的值复制到另一个数组,可以使用memcpy()函数。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-01-20
不能直接相等,可以一个一个的赋值,
如:
int b[5]={1,2,3,4,5};
int a[5];
for(int i=0;i<5;i++)
{
a[i]=b[i];
}
第2个回答  2014-01-20
分别指向不同的数组,数组的地址不同,那么指针当然不同了,你说呢?

你说的可能是等号的重载问题吧
好像可以用,CString类型的,好像可以用等号来比较两个数组的大小
因为CString中=运算符是重载了
第3个回答  推荐于2018-05-07
例如
char a[5],b[5];//建立两个数组
char *p1=a,*p2=b;
/*这个表达式的意思并不是把数组存入指针p,而是说把数组首个元素(例如a[0])的 [地址] 存入p空间中,P就好比一个箱子用来存地址。*/
p1=p2;
/*指针之间写赋值号实际的意思是,把p2空间的内容放入p1中,前面说了,p1存的是a[0]的地址,p2是b[0]的地址,一交换,两个空间都存放b[0]的地址了,例如执行printf ("%s",p);那么会输出b中存放的字符串*,记住,交换的只是一个地址。/本回答被网友采纳