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

时间:2016-01-15 14:23:15

标签: c arrays dynamic malloc 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 */

1 个答案:

答案 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具有元素内存位置。