C语言 需要为 2D 元组数组和未知大小的 2D 指针数组分配内存



这里的第一个问题,如果我错过了什么,很抱歉。我正在尝试用 C 对物理学中的 2D 静电问题进行建模。我有一个主数组,我将在每个点上存储电位和电荷密度的值,然后是一个指针数组,它将为主数组提供内存地址。

但是我不知道编译时的数组大小,因为它是运行时的用户输入,因此需要能够动态分配内存。这是我已经拥有的,任何帮助都值得赞赏。谢谢!

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
typedef struct tTuple { //Create new type called tuple
    double poten; //potential
    double cden; //charge density
} tuple;

int i, j;
int N, M;
#define a 10 //Grid Width
#define b 10 //Grid Height
int x1, y1, x2, y2; //Positions of two point charges
int my_rank, comm_size;
double w;
tuple  mainarray [a][b];
double *pointerarray[a][b];
int convflag = 1;  //Global convergence checker flag

/* More code below with main function containing scanf etc */
您需要

使用 malloc 或 calloc 来动态分配内存。我在这里假设 a 和 b 是从用户那里获得的:

tTuple * main_array;

并在您的设置功能中放入

main_array = calloc(a*b, sizeof(tTuple));

对于错误检查,请测试main_array是否为 NULL。要获取元素,请使用

main_array[i*b+j]

我不确定您打算如何使用指针数组 - 真的需要吗? main_array具有元素内存位置。

相关内容

  • 没有找到相关文章

最新更新