当前我的指针适用于我的两个对象指针,例如
Object * obj1;
Object * obj2;
obj2 = obj2;
如果我有
,我该怎么做?Object * array[10][10];
Object * newarray[10][10];
我可以在不使用for循环来通过元素来分配数组到newarray吗?
要求因为我的主类中包含数组。 然后将其传递给子类以便可以处理,需要将副本保存在新类中,以便子类函数可以访问它。
由于
答案 0 :(得分:4)
Object * array[10][10];
不是指向10x10对象数组的指针。它是一个10x10指向对象的数组。
#include <iostream>
struct Object {};
Object * arr[10][10];
int main(int argc, const char* argv[])
{
std::cout << "sizeof arr = " << sizeof(arr) << std::endl;
return 0;
}
产生 sizeof arr1 = 400
如果您想坚持使用类似C的行为,可以使用memcpy:
#include <iostream>
#include <string.h>
struct Object {};
Object * arr1[10][10];
Object * arr2[10][10];
...
memcpy(arr1, arr2, sizeof(arr1));
如果你想采用C ++方法,就像其他人所说的那样,看看std :: array或std :: vector。
答案 1 :(得分:1)
Kfsone的解决方案达到了目的。以下示例代码说明了这一点但是,他希望发表对他的帖子的评论,然后代码就不可读了。
#include<stdio.h>
#include<string.h>
int main()
{
int *x1[2][2];
int *x2[2][2];
int a1 = 100;
int b1 = 101;
int c1 = 110;
int d1 = 111;
int a2 = 200;
int b2 = 201;
int c2 = 210;
int d2 = 211;
x1[0][0] = &a1;
x1[0][1] = &b1;
x1[1][0] = &c1;
x1[1][1] = &d1;
x2[0][0] = &a2;
x2[0][1] = &b2;
x2[1][0] = &c2;
x2[1][1] = &d2;
memcpy(x1,x2,sizeof(x2));
printf("%d\n",*x1[1][1]);
return 1;
}