簡體   English   中英

我不確定為什么該程序無法編譯

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM