【发布时间】:2011-11-05 22:10:49
【问题描述】:
这是我的代码:
struct Point
{
int i;
int j;
};
int main(int argc, char *argv[])
{
int n = atoi(argv[1]);
int a;
int b;
for(a = 0; a < n; a++)
{
for(b = a+1; b < n; b++)
{
struct Point *data = (struct Point *) malloc(sizeof(struct Point));
data.i = a;
data.j = b;
// do something here
free(data);
}
}
return 0;
}
data.i = a; 和 data.j = b; 出现错误:
error: request for member 'i' in something not a structure or union
error: request for member 'j' in something not a structure or union
我该如何解决这个错误?
另外,我应该在malloc(sizeof(struct Point)) 之后使用free() 吗?
【问题讨论】:
-
FWIW,如果您在当前迭代结束后不需要这些值,则不需要
malloc(因此,不需要free)。您可以像现在一样简单地使用struct Point data;并分配成员。 -
@delnan 其实我在另一个线程中使用它,所以我不得不使用
malloc -
您对指针和动态内存分配不满意而使用线程?!?
-
@delnan 我是一名Java程序员,所以我对指针一点也不熟悉。
-
data->i是在使用.运算符访问其成员之前取消引用指针(以获取特定结构类型的对象)的方式的快捷方式:(*data).i。跨度>
标签: c++ c pointers struct free