C 中止陷阱:6个错误
我有两个函数来移动类型p的字节和类型Q的其他字节:C 中止陷阱:6个错误,c,C,我有两个函数来移动类型p的字节和类型Q的其他字节: static const int vector_shift_Q_256[8] = {1,3,5,7,0,2,4,6}; static const int vector_shift_P_256[8] = {0,1,2,3,4,5,6,7}; void shiftBytes_Q_256(uint8_t block[8][8]) { uint8_t block_aux[8][8]; for(i = 0; i < 8; i++) {
static const int vector_shift_Q_256[8] = {1,3,5,7,0,2,4,6};
static const int vector_shift_P_256[8] = {0,1,2,3,4,5,6,7};
void shiftBytes_Q_256(uint8_t block[8][8]) {
uint8_t block_aux[8][8];
for(i = 0; i < 8; i++) {
for(j = 0; j < 8; j++) {
if(j-(vector_shift_Q_256[i]) >= 0)
block_aux[i][j-(vector_shift_Q_256[i])] = block[i][j];
else
block_aux[i][8+(j-(vector_shift_Q_256[i]))] = block[i][j];
}
}
memcpy(block,block_aux,L_256);
}
void shiftBytes_P_256(uint8_t block[8][8]) {
uint8_t block_aux[8][8];
for(i = 0; i < 8; i++) {
for(j = 0; j < 8; j++) {
if(j-(vector_shift_P_256[i]) >= 0)
block_aux[i][j-(vector_shift_P_256[i])] = block[i][j];
else
block_aux[i][8+(j-(vector_shift_P_256[i]))] = block[i][j];
}
}
memcpy(block,block_aux,L_256);
}
当我尝试为p和Q两种类型创建一个函数时,我得到一个错误中止陷阱:6:
void shiftBytes_P_Q_256(uint8_t block_P[8][8],uint8_t block_Q[8][8]) {
uint8_t block_aux_P[8][8];
uint8_t block_aux_Q[8][8];
for(i = 0; i < 8; i++) {
for(j = 0; j < 8; j++) {
if(j-(vector_shift_P_256[i]) >= 0) {
block_aux_P[i][j-(vector_shift_P_256[i])] = block_P[i][j];
}if(j-(vector_shift_P_256[i]) < 0) {
block_aux_P[i][8+(j-(vector_shift_P_256[i]))] = block_P[i][j];
}
if(j-(vector_shift_Q_256[i]) >= 0) {
block_aux_Q[i][j-(vector_shift_Q_256[i])] = block_Q[i][j];
} if(j-(vector_shift_Q_256[i]) < 0) {
block_aux_Q[i][8+(j-(vector_shift_Q_256[i]))] = block_Q[i][j];
}
}
}
memcpy(block_P,block_aux_P,L_256);
memcpy(block_Q,block_aux_Q,L_256);
}
我想知道此函数导致此错误的原因。我没有看到I和j声明。它们被声明为全局变量与您的问题无关,但1为什么要使用全局变量作为循环变量?2.为什么不使用else,而不是单独的if条件?