【发布时间】:2017-11-30 22:39:55
【问题描述】:
所以我想要实现的是全局变量,它表示指向结构的动态数组的指针,其中包含指向动态数组的其他指针。
所以我在头文件中声明了所有内容:
/*** "GLOB.h" ***/
//Dynamic Array of fixed Arrays of 4 floats each
typedef float DArray1[][4];
//Dynamic Array of Integers
typedef int DArray2[];
//Struct
struct MyStruct
{
//pointer to DArray1
DArray1 * A1;
//pointer to DArray2
DArray2 * A2;
//Length of A1 and A2
int len = 1;
//Some other simple elements of fixed size
};
//Dynamic Array of Structs
typedef MyStruct DAStructs[];
namespace GLOB
{
//pointer to DAStructs
extern DAStructs * SS;
//Few other simple variables initialized in place
};
因为我不确定我是否正确声明了所有内容 - 第一个问题是:如何在 C/C++ 中声明这样的数据结构?
第二个(+第三个)是:如何正确初始化并用一些可变长度完成它?
我猜初始化和终结应该是这样的:
#include "GLOB.h"
namespace GLOB
{
void Init_SS(int len) {
SS = new MyStruct*[len];
for(int k=0; k<len; k++){
SS[k].A1 = new float*[1][4];
for(int j=0; j<4; j++) SS[k].A1[0][j] = 0.0;
SS[k].A2 = new int*[1];
SS[k].A2[0] = 0;
}
}
void Fin_SS() {
int len = length(SS);
for(int k=0; k<len; k++){
delete [] SS[k].A1;
delete [] SS[k].A2;
}
delete [] SS;
}
}
但显然这只是一堆废话,而不是适当的代码......
附:我宁愿避免使用或任何其他解决方案因为我首先想学习第二我需要尽可能多地控制元素如何放置在内存中因为稍后我需要将指向此类结构的指针传递给其他函数从 DLL 导入...
【问题讨论】:
-
好吧 C 然后我提到我不在乎 C/C++
-
您发布的是 C++ 代码。没有“C/C++”之类的东西。
-
你只是在寻找类似
int *A2 = new int[n]的东西吗? -
IDE(例如 Visual Studio)接受 C 和 C++。我错了吗?
-
我会说英语和拉丁语。这并不意味着它们是同一种语言。
标签: c arrays struct dynamic-arrays