访问结构中的双指针
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 );
【讨论】:
以上是关于访问结构中的双指针的主要内容,如果未能解决你的问题,请参考以下文章