【发布时间】:2017-07-25 17:09:46
【问题描述】:
当我在结构中创建一个 char 指针时,我可以只为该值分配一个字符串,它工作正常。当我尝试对 int 数组执行类似操作时,我会收到编译警告,这可能是由于我正在尝试执行的操作的语法不正确。数据的值在程序的整个生命周期中都是静态的:
struct structure
{
char *name;
int *data[]; //Likely the issue
};
struct structure value = {
"Some name",
{0, 1} //Error is here
};
每当我尝试初始化值对象时,我都会收到一个关于从没有类型转换的整数创建指针的编译错误。我的假设是该值需要一个指针,所以我首先要求的是错误的值。
我的问题是,如何在结构中声明一个 int 数组,这样我的值对象声明仍然有效?
【问题讨论】:
-
int *数据;为什么是括号?
-
@RSon1234 我试图将它声明为“指向数组的指针”,这样我就可以在值对象内部简单地声明一个数组,而不必在程序中使用 malloc初始化。我不认为 malloc 是必需的,因为数组的实际长度在编译之前是已知的。
-
@DavidBowling 数组长度因结构的实例而异,但对于该结构的一个实例来说它是静态的,并且在整个运行时都不会改变。我没有将那部分包含在 OP 中。这就是为什么我问,“我如何在结构中声明一个 int 数组,以便我的值对象声明仍然有效?”
-
@RSon1234 数组不是常量指针。
标签: c arrays pointers integer structure