[英]I'm not sure why this program won't compile
這是我的程序:
#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];”相同嗎? 哪個是(更多)正確的?
宏COL
擴展為3;
,因此您的聲明和定義中的內容如下所示:
int arr1[][3;]
從#define
行中刪除分號。
同樣,參考for循環,
arr1[r][i] = arr2[i];
做與arr1[r][i] = &arr2[i];
?
不,第一個是正確的。 左值 arr1[r][i]
是整數。 右值 arr2[i]
也是一個整數。
如果使用&arr2[i]
引用它,則其類型變為int*
,並且是指向元素i
的指針,然后嘗試將其分配給int
類型的左值 。 如果嘗試這樣做,則編譯器應發出警告。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.