首先在这里提出疑问,如果我错过了什么,那就很抱歉。 我试图用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 */
答案 0 :(得分:0)
您需要使用malloc或calloc来动态分配内存。我在这里假设已经从用户那里获得了a和b:
catch
在你的设置功能中输入
close()
对于错误检查,请测试main_array不是NULL。要获取元素,请使用
public class Main {
public static void main(String[] args) throws Exception {
// try block fails and close() fails
try (T t = new T()) {
throw new Exception("thrown by try part");
} catch (Exception e) {
System.out.println(e.getMessage());
System.out.println(e.getSuppressed()[0].getMessage());
}
// try block is successful but close() fails
try (T t = new T()) {
//
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
class T implements AutoCloseable {
@Override
public void close() throws Exception {
throw new Exception("thrown by close");
}
}
我不确定你打算如何使用指针数组 - 它真的需要吗? main_array具有元素内存位置。