相关疑难解决方法(0)

为什么在声明多维数组时允许省略第一维,而不是其他维?

为什么没有必要提到多维数组的第一维,必须提到其他维度:

int A[][][2]={{{1,2},{3,4}},{{4,5},{5,6}}}; // error 
int A[][2][2]={{{1,2},{3,4}},{{4,5},{5,6}}}; // OK 
Run Code Online (Sandbox Code Playgroud)

我无法理解这背后的概念或逻辑.

c c++ arrays multidimensional-array

8
推荐指数
2
解决办法
773
查看次数

如何在C中声明一个常量2d字符串数组

我有以下数组结构:

left , right , top
top , left , right 
top , top , left 
Run Code Online (Sandbox Code Playgroud)

我想在C中声明它,我这样做了:

char *movements[][] = {{"left","right","top"},
                        {"top","left","right"},
                        {"top","top","top"}
                       }
Run Code Online (Sandbox Code Playgroud)

但我得到了这error : array has incomplete element type. 是实现这一目标的正确方法(声明和访问(打印)).我是否需要采用三维数组?

c arrays string

2
推荐指数
1
解决办法
3354
查看次数

数组具有不完整的元素类型。这是什么意思?

我想创建一个存储任何整数 n 的乘法值的数组。之后,我想将该数组传递给另一个函数并打印出该数组。但是,我收到以下错误:

我的代码:

这是我的 .c 文件:

 #include "multiplication.h"
#include <stdio.h> 
int main(){
int num;
int arr=multiplication(4);
printArray(arr);



}

int mulitpication(int num){
 /* initialize array and build*/
    int arr[num][num];
    for(int i=0; i<num;i++){
        printf("row number: %d ",i);
         for(int j=0;j<num;j++){
             printf("column number: %d", j);
            arr[i][j]= (i+1)*(j+1);
         }
    }
    return arr;
    }

    void printArray(int arr[][]){
    
    int i;
    for(i=0;i<sizeof(arr);i++){
        for(int j=0;j<sizeof(arr);j++){
            printf("%d ",arr[i][j]);
        }
        
    }
Run Code Online (Sandbox Code Playgroud)

这是我的头文件:

void multiplication(int num);
void print(int arr[][]);
Run Code Online (Sandbox Code Playgroud)

错误:

 multiplication.h:4:19: error: array has incomplete element type 'int []' …
Run Code Online (Sandbox Code Playgroud)

c arrays function-declaration

2
推荐指数
1
解决办法
204
查看次数