我写了一个函数,它将一个结构数组二进制复制到另一个。问题是它不能正常工作,我不知道为什么。对我来说一切似乎都很好。
- 像素是具有 3 个无符号字符的结构,sizeof(pixel) = 3,
- pixarr1 是指向二维动态数组 [8][2] 的指针,
- pixarr2 是指向二维动态数组 [8][n] 的指针。例如,n = 8,这并不重要。
我需要做这样的事情:
for(int i=0; i<8; i++) {
for(int y=0; y<2; y++) {
arr2[i][y] = arr1[i][y];
}
}
但我想做“二进制”。像这样:
void copyStruct(pixel*** pixarr1, int startline, int height, pixel*** pixarr2) {
pixel** arr1 = *pixarr1;
pixel** arr2 = *pixarr2;
unsigned char buffer[16];
int sizeofstruct = height*3*8;
int padding;
for(int i=0; i<=sizeofstruct; i+=16) {
if ( i+16 > sizeofstruct) {
padding = sizeofstruct-i;
memcpy(buffer, arr1+i, padding);
memcpy(arr2+(startline*8)+i, buffer, padding);
} else {
memcpy(buffer, arr1+i, 16);
memcpy(arr2+(startline*8)+i, buffer, 16);
}
}
}
我犯了什么错误?
PS。对不起,源代码的问题,这个编辑器是..
聚苯乙烯。请不要专注于指针的使用。我必须使用它们。如果我在函数内外打印指针,我会看到相同的地址,所以这很好(在我的逻辑中)。