我要问的是众所周知的"结构的最后一个成员有可变长度"的技巧.它是这样的:
struct T {
int len;
char s[1];
};
struct T *p = malloc(sizeof(struct T) + 100);
p->len = 100;
strcpy(p->s, "hello world");
Run Code Online (Sandbox Code Playgroud)
由于结构在内存中的布局方式,我们可以将结构覆盖在一个大于必要的块上,并将最后一个成员视为大于1 char指定的大小.
所以问题是:这种技术在技术上是不确定的行为吗?.我希望它是,但很好奇标准对此有何看法.
PS:我知道C99的方法,我希望答案专门针对上面列出的技巧版本.
我必须声明一个数组或多维数组的数组,而不知道大小.我希望在这种情况下使用简单的数组做类似的事情:
int *array;
cin >> size;
array = new int[size];
Run Code Online (Sandbox Code Playgroud)
也许我可以做一个循环来初始化像这样的指针指针:
int **array;
cin >> rows >> col;
array = new *int[rows]
for (int i = 0; i < rows; ++i)
array[i] = new int[col];
Run Code Online (Sandbox Code Playgroud)
但如果可以提供更好的解决方案,我更愿意不这样做.
将
string示例[];
是一个数值不确定的数组?如果可以,我可以将.txt文件中的值导入其中,即使我不知道有多少项?