我有两个多维数组
uint8_t arr1 [24][8];
uint8_t arr2 [24][8];
我正在编写一个函数以打印出这些数组的内容,并且希望向该函数指定要打印的数组。我尝试了以下方法:
void print_array(int n) {
uint8_t arr[24][8];
if (n == 1) {
arr = arr1;
}
else if (n == 2) {
arr = arr2;
}
// ... code to print "arr" contents ...
}
基本上,我希望能够将引用复制到多维数组,以避免使用重复的代码来打印数组内容。上面给了我一个“无效的数组分配”错误。我需要怎么做才能成功复制数组引用?
当使用数组作为值时(我说的是C数组),则其名称表示第一个元素的地址。这意味着您要么需要以某种方式手动复制内存(memcpy),要么需要以某种方式使用该指针。
对于第二种选择(由于没有涉及副本,因此建议这样做)将起作用:
#include <iostream>
using namespace std;
uint8_t arr1 [24][8];
uint8_t arr2 [24][8];
void print_array(int n) {
uint8_t (*arr)[24][8];
if (n == 1) {
arr = &arr1;
}
else if (n == 2) {
arr = &arr2;
}
for(int i=0; i<24; i++){
for(int j=0; j<8; j++)
printf("\n %d ", (int)(*arr)[i][j]);
}
}
int main() {
arr1[0][1] = 3;
arr1[1][5] = 6;
print_array(1);
return 0;
}
实时尝试:http : //ideone.com/CvMQfB
还要注意,如果您使用的是C ++ 11,那么您可能会脱口而出,std::array
并且对使用相同语法的想法有所了解
std::array<int,4> A = {10,20,30,40};
std::array<int,4> B = A; //copy array A into array B
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句