在 c 中,如何在没有“->”的情况下访问 属性?
How is it possible to access property without "->" in c?
我已经学习 c 一段时间了,假设我认为我对指针有很好的理解,尽管这个例子让我很烦。
假设我们有一个数组,其中每个元素都指向一个结构。如果我们为两个元素分配 space,如下例所示:
p = (test**)malloc(2*sizeof(test*));
p[0] = (test*)malloc(sizeof(test));
p[1] = (test*)malloc(sizeof(test));
结构测试如下:
typedef struct {
char *t;
long long p;
} test;
现在,当我为如下变量赋值时:
(*p)[1].t = (char*)malloc(10*sizeof(char));
strcpy((*p)[1].t, "test");
(*p)[1].p = 10;
p[1]->t = (char*)malloc(10*sizeof(char));
p[1]->p = 20;
strcpy(p[1]->t, "test34e");
它们填充了完全不同的内存块。在此示例中,我如何才能访问 属性 t (*p)[1].t
?
看来你的意思如下
(*p[1] ).t = (char*)malloc(10*sizeof(char));
strcpy( ( *p[1] ).t, "test");
( *p[1] ).p = 10;
也就是p[1]
是一个指针。因此,您可以编写例如 p[1]->t
或取消引用指针并获取结构类型 ( *p[1] ).t
.
的指向对象
我已经学习 c 一段时间了,假设我认为我对指针有很好的理解,尽管这个例子让我很烦。
假设我们有一个数组,其中每个元素都指向一个结构。如果我们为两个元素分配 space,如下例所示:
p = (test**)malloc(2*sizeof(test*));
p[0] = (test*)malloc(sizeof(test));
p[1] = (test*)malloc(sizeof(test));
结构测试如下:
typedef struct {
char *t;
long long p;
} test;
现在,当我为如下变量赋值时:
(*p)[1].t = (char*)malloc(10*sizeof(char));
strcpy((*p)[1].t, "test");
(*p)[1].p = 10;
p[1]->t = (char*)malloc(10*sizeof(char));
p[1]->p = 20;
strcpy(p[1]->t, "test34e");
它们填充了完全不同的内存块。在此示例中,我如何才能访问 属性 t (*p)[1].t
?
看来你的意思如下
(*p[1] ).t = (char*)malloc(10*sizeof(char));
strcpy( ( *p[1] ).t, "test");
( *p[1] ).p = 10;
也就是p[1]
是一个指针。因此,您可以编写例如 p[1]->t
或取消引用指针并获取结构类型 ( *p[1] ).t
.