指向结构中指针的指针?

时间:2013-09-17 17:34:01

标签: c pointers struct

嘿伙计们,我很难理解如何让指针指向结构中的另一个指针,从而指向结构中的另一个指针。不确定这是否有意义。

基本上,通常我会写一些类似的东西:

test->first = NULL;

但我也需要首先访问部分内容。我在尝试:

test->first->alpha = NULL;

但这不起作用。关于如何通过声明测试来访问alpha的任何想法?从而将test-> first-> alpha设置为NULL?

谢谢你们!

3 个答案:

答案 0 :(得分:1)

除非您指定有效指针test->first,否则无法访问test->first->alpha。如果你做了,你取消引用一个无效的指针,这会导致未定义的行为,并可能崩溃。

答案 1 :(得分:1)

如果你问如何声明这样的结构,这是一个例子:

 struct First {
     int alpha;
 };
 struct Test {
     struct First* first;
 };

正如其他人所指出的那样,在尝试取消引用它之前,你必须先确定test->第一点,如下所示:

struct Test* test = malloc(sizeof(struct Test));
test->first = malloc(sizeof(struct First));
test->first->alpha = 123;

答案 2 :(得分:0)

如果first自我指向NULL,则访问alpha会导致未定义的行为。

确保first指向有效的记忆位置,然后您可以指定其成员。