Вот моя программа:Я не знаю, почему эта программа не будет компилироваться
#include<stdio.h>
#define COL 3;
void copy_row(int arr1[][COL], int rows, int arr2[], int r);
void copy_row(int arr1[][COL], int rows, int arr2[], int r){
int i;
if(r >= rows || r < 0)
return;
for(i = 0; i < COL; i++){
arr1[r][i] = &arr2[i];
}
}
int main(void){
return 0;
}
Когда я пытаюсь скомпилировать это с GCC, он говорит: «ошибка: ожидается,„]“перед„;“ токен "в строке 4 и строке 6.
Кроме того, обратитесь к циклу for:" arr1 [r] [i] = arr2 [i]; " сделайте то же самое как «arr1 [r] [i] = & arr2 [i];"? Что является (более) правильным?
Вам не нужна точка с запятой в конце этой строки '# define'. –
Операторы '# define' редко, если вообще когда-либо, заканчиваются точкой с запятой. Предложите удалить эту конечную точку с запятой, тогда единственное сообщение компилятора: предупреждение: присваивание делает целое число из указателя без приведения для этой строки: 'arr1 [r] [i] = & arr2 [i];' – user3629249