当前我有指针适用于我的两个对象指针,例如
Object * obj1;
Object * obj2;
obj2 = obj2;
如果我有,我将如何让它工作
Object * array[10][10];
Object * newarray[10][10];
我可以在不使用 for 循环循环遍历元素的情况下将数组分配给 newarray 吗?
问是因为我有我的主类,其中包含数组。然后将其传递给子类以便对其进行处理,需要将副本保存在新类中,以便子类函数可以访问它。
谢谢
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;
}
产生 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。
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;
}