C ++指向另一点

时间:2013-05-26 23:05:14

标签: c++ pointers

当前我的指针适用于我的两个对象指针,例如

Object * obj1;
Object * obj2;

obj2 = obj2;

如果我有

,我该怎么做?
Object * array[10][10];
Object * newarray[10][10];

我可以在不使用for循环来通过元素来分配数组到newarray吗?

要求因为我的主类中包含数组。 然后将其传递给子类以便可以处理,需要将副本保存在新类中,以便子类函数可以访问它。

由于

2 个答案:

答案 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;
}