簡體   English   中英

C語言中下標值既不是數組也不是指針也不是向量

[英]subscripted value is neither array nor pointer nor vector in C language

我有一個問題。 我想在矩陣中使用用戶定義的大小,但我有那個錯誤......

任何的想法?

我正在使用 C 語言

int play(int matrix[][],int sz, char play_user[1]){
    if (play_user[0] =='a'){
        int left();
        left(matrix[sz][sz],sz);
    }


int left(int matrix[][], int sz){
    for(int i=0;i<sz;++i){                    
        for(int j=0;j<sz;++j){
            printf("%d\t", matrix[i][j]);
        }
        printf("\n");
    }  

而不是

int left(int matrix[][], int sz);

首先傳遞尺寸信息。 這使用了一個可變長度數組,在 C99 中可用,在 C11、C17 中可選。

int left(int sz, int matrix[sz][sz])

或者更好的是,傳遞兩個維度並使用size_t

int left(size_t rows, size_t cols, int matrix[rows][cols]);

int play(size_t sz, int matrix[sz][sz], char play_user[1]) {
  if (play_user[0] == 'a') {
    return left(sz, sz, matrix);
  }
  return 0;
}

int left(size_t rows, size_t cols, int matrix[rows][cols]) {
  for (size_t r = 0; r < rows; ++r) {
    for (size_t c = 0; c < cols; ++c) {
      printf("%d\t", matrix[r][c]);
    }
    printf("\n");
  }
  return 0;
}

另請參閱將多維可變長度數組傳遞給函數

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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