这应该是C编程中的基本问题,但我在访问放置在另一个结构中的结构的指针时感到困惑:我有以下两种结构:
struct header{
char version;
Bucket *bucket;
};
struct Bucket{
int length;
};
现在,我如何访问结构Bucket变量" length"在标题对象头的帮助下,定义为
struct header head;
如果它是一个简单的结构变量,那么我可以通过 dot 运算符访问它,但这是一个指针,所以有人可以帮助我吗?它是一个基本的结构层次结构,但我有一个很大的混乱。
答案 0 :(得分:2)
简单使用->
运算符。
请注意,您首先必须将bucket
指针设置为有效值,否则您可能会收到访问冲突错误。
例如:
struct header head;
struct Bucket bucket;
head.bucket = &bucket;
// then access it via head
head.bucket->length;
您也可以手动分配存储桶,但是您不应忘记free
它。
此外,如果您还没有header
桶,则应使用struct Bucket* bucket;
定义typedef
结构。
答案 1 :(得分:0)
你可以使用它。
head.bucket->length
答案 2 :(得分:0)
head
应该清楚
head.bucket
给你指针。
如果你只有一个指针桶,你将如何访问长度?
bucket->length
组合:
head.bucket->length
就这么简单。
答案 3 :(得分:0)
您可以通过以下方式访问它:
head.bucket->length
同样在结构头的声明中,它应该是:
struct Bucket *bucket;
答案 4 :(得分:0)
使用.
:
head.bucket
现在,bucket是一个指针,因此可以访问->
head.bucket->length
答案 5 :(得分:0)
head.bucket->length
bucket是head head.bucket
的成员,现在该成员是指向结构的指针head.bucket->length
在使用bucket
指针之前,应将其初始化为有效地址。
Bucket B;
head.bucket=&B;
head.bucket->length=0;// Example statement
答案 6 :(得分:0)
你应该同时使用点和箭头:
#include <stdio.h>
struct Bucket {
int length;
};
struct header{
char version;
struct Bucket *bucket;
};
int main(int argc, char **argv) {
struct header head;
head.version = 'a';
head.bucket = (struct Bucket *)calloc(1,sizeof(struct Bucket));
head.bucket->length = 2;
printf("%d\n", head.bucket->length);
//delete head
};