2012-10-12 81 views
4

在Arduino的IDE,我想补充两个现有数组的内容是这样的:添加两个数组?

#define L0 { {0, 0, 0, 0}, {0, 0, 0, 1}, {0, 0, 0, 0} } 
#define L1 { {0, 0, 0, 1}, {0, 0, 0, 0}, {0, 0, 0, 0} } 

应该成为

int myarray[3][4] = { {0, 0, 0, 1}, {0, 0, 0, 1}, {0, 0, 0, 0} } 

我怎么会去吗?

谢谢!

+3

您是否尝试过使用循环还是两个? –

+3

包裹在阵列中的一类,初始化构造函数中的内容,并创建一个函数类的静态实例变量,返回一个参考包裹阵列 – lurscher

+1

@lurscher - 就这么简单!为什么我没有想到这一点? –

回答

2

你的这一点;

const int a[3][4] = { {0, 0, 0, 0}, {0, 0, 0, 1}, {0, 0, 0, 0} }; 
const int b[3][4] = { {0, 0, 0, 1}, {0, 0, 0, 0}, {0, 0, 0, 0} }; 

int c[3][4]; 

const int* pa = &a[0][0]; 
const int* pb = &b[0][0]; 
int* pc = &c[0][0]; 

for(int i = 0; i < 3 * 4; ++i) 
{ 
    *(pc + i) = *(pa + i) + *(pb + i); 
} 
2

我想你很困惑如何去访问阵列L0L1,因为它们被定义为宏。只要将它们分配到阵列,因为预处理器将简单地替换它们:

int l[][4]=L0; 
int m[][4]=L1; 

预处理器将取代L0L1与他们的价值观和编译器将只能看到他们为:

int l[][4]={ {0, 0, 0, 0}, {0, 0, 0, 1}, {0, 2, 0, 0} }; 
int m[][4]={ {0, 0, 0, 5}, {0, 0, 0, 6}, {0, 0, 7, 0} }; 

现在,你可以使用l & m来访问数组的元素。应该很容易从这里足以增加两个阵列:)