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