这里的第一个问题,如果我错过了什么,很抱歉。我正在尝试用 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具有元素内存位置。