访问结构中的双指针

Posted

技术标签:

【中文标题】访问结构中的双指针【英文标题】:Accessing double pointer in a struct 【发布时间】:2021-12-16 07:53:56 【问题描述】:

它没有给出任何输出。看起来我真的不明白如何。

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

typedef struct Matriks
    int jumlahBaris;
    int jumlahKolom;
    int** nilai;
 Matriks, *Matriks2;

void main()
    int i;
    int baris = 0;
    int kolom = 0;
    Matriks A;
    A.jumlahBaris = 2;
    A.jumlahKolom = 3;
    A.nilai = (int **)malloc((A.jumlahBaris)*(A.jumlahKolom)*sizeof(int*));
    Matriks2 pA = &A;

    int x = 26;
    int y = 12;
    A.nilai[0][0] = x;
    A.nilai[0][2] = y;
    printf("%d\n", A.nilai[0][0]);
    printf("%d", A.nilai[0][2]);
    free(A.nilai);

请帮助我了解我的代码有什么问题。

【问题讨论】:

【参考方案1】:

这个内存分配

A.nilai = (int **)malloc((A.jumlahBaris)*(A.jumlahKolom)*sizeof(int*));

无效。

您为A.jumlahBaris * A.jumlahKolom 未初始化的指针分配了一个内存段。

您需要的是以下内容

A.nilai = malloc( A.jumlahBaris * sizeof( int* ) );

for ( int i = 0; i < A.jumlahBaris; i++ )

    A.nilai[i] = malloc( A.jumlahKolom * sizeof( int ) );

所以相应地分配的内存应该以相反的顺序释放

for ( int i = 0; i < A.jumlahBaris; i++ )

    free( A.nilai[i] );


free( A.nilai );

【讨论】:

以上是关于访问结构中的双指针的主要内容,如果未能解决你的问题,请参考以下文章

c中结构指针内的双数组

具有数据结构的双指针的算术

SWIG Python - 包装一个需要指向结构的双指针的函数

C++中的双指针向量

链表中的双指针

数组中的双指针