【发布时间】:2013-06-09 05:46:06
【问题描述】:
我有一个内部带有 int 数组的结构,我将其传递给要初始化数组的函数
这样的数组结构..
typedef struct Container{
struct intArray *P;
int length;
} Container;
typedef struct intArray{
int *array;
int length;
} intArray;
初始化数组的函数 就这样……
int Initializer(intArray *myStruct, int n)
{
myStruct->array = malloc(sizeof(int) * (lengthOfint);
^
If n=55 then length would be 2
//let's just say n=5
myStruct->array[0] = n;
//return 1 if successful
return 1;
}
在另一个函数中,我像这样调用初始化函数...
Container *myContainer = malloc(sizeof(Container));
myContainer->P = malloc(sizeof(intArray *) * Some_Defined_Value);
Initializer(&myContainer, 5);
printf("the data that should be at index 0 -> %d\n", myContainer->P.array[0];
我认为 printf 语句会打印出 5,但每次编译时它都会打印出不同数字的垃圾。我不认为我掌握了结构理念中的结构中的数组。
【问题讨论】:
-
请发布可以编译的代码...
myStruct->array = malloc(sizeof(int) * (lengthOfint);缺少右括号。另外,我很困惑n=55是如何导致lengthOfint == 2的;您是否以位为单位测量并假设sizeof(int) == 4和CHAR_BIT == 8?不是不合理的假设,只是位数的使用不是那么明显。 -
我认为,op 对
lengthOfint == ceil(log10(abs(n)))之类的人来说意味着什么。 -
这背后的想法是我需要将一个数字存储到一个 int 数组中,所以 12345 将在一个 intArray[5] = {1,2,3,4,5}...所以55 将产生一个大小为 2 的数组。
标签: c arrays pointers struct malloc