有人可以解释一下这句话中发生了什么吗?

问题描述 投票:0回答:1

基本上,我理解指针。但是,当涉及到还涉及指针的矩阵的动态分配时,我在过程中迷路了。我想知道如何翻译这段代码以理解它。

(*a)[i] = (int*)malloc((*m) * sizeof(int));

用于读取矩阵的函数如下所示:

void reading(int *n, int *m, int ***a) {
    int i, j;
    printf("n=");
    scanf("%d", &*n);
    printf("m=");
    scanf("%d", &*m);
    (*a) = (int**)malloc((*n) * sizeof(int*));   
    for (i = 0; i < *n; i++)                     
        (*a)[i] = (int*)malloc((*m) * sizeof(int)); 
    for (i = 0; i < *n; i++) {
        for (j = 0; j < *m; j++) {
            printf("a[%d][%d]=", i, j);
            scanf("%d", &(*a)[i][j]);
        }
    }
}

还有声明中*** a的含义是什么。在大学里,有人告诉我,第一个星号代表动态分配,而另外两个星号代表涉及矩阵。对于向量,动态分配是** v等等。但是我不能自然地在脑海中解释它,以便了解其中正在发生什么。

基本上,我理解指针。但是,当涉及到还涉及指针的矩阵的动态分配时,我在过程中迷路了。我想知道如何翻译此段...

c visual-c++ dynamic-memory-allocation
1个回答
0
投票

如果变量a声明为像

© www.soinside.com 2019 - 2024. All rights reserved.