【发布时间】:2017-02-28 02:13:33
【问题描述】:
typedef struct myArrays
{
int id;
}MyArray;
当我们像这样分配动态数组时:MyArray * myArray = malloc(10 * sizeof (myArray) );,然后我们使用点(。)运算符访问内存位置:myArray[0].myVar,但是当我们制作单个元素时MyArray * myArray = malloc( sizeof (myArray) );然后我们像myArray->myVar 这样使用箭头(->)访问它的成员。
在数组分配的第一种情况下,myArray = malloc(10 * sizeof (myArray) ),myArray[i] 指向第 i 个元素。所以我们也在这里 在引用其成员时应使用箭头,例如 (myArray[i]->myVar)。
我知道 (myArray[i]->myVar) 是错误的,但请从概念上解释为什么它是错误的?
【问题讨论】:
-
因为您没有分配指针数组。 myArray 的定义在哪里?请展示一个完整、有效的示例。
-
我编辑了我的问题。
-
(*X).Y与X[0].Y含义相同
标签: c arrays malloc dynamic-memory-allocation