繁体   English   中英

通过C中的指针从结构体获取值

[英]Getting value from struct by pointer to pointer in C

我正在用C编写程序。基本上,我有一个包含一些字段和一个指针数组的结构。 每个结构都有一个指向另一个结构的指针数组,该另一个结构在它们之间形成“连接”。 我试图获取存储在指向它的指针的内存地址中的字段的值。

假设这个。 我在内存中有两个这样的节点。 A和B。A在A的数组中有一个指针,该指针是对B的引用。要获取此指针,我必须执行以下操作:

*temp_ptr = (*ptr).pointer_array[0]

这将获得指针地址*ptr并将其提供给*temp_ptr

现在我想知道的是。 我怎样才能做到这一点? 尝试此操作时,出现“表达式必须具有结构或联合类型”

当我尝试使用Java时,我可以这样做

int variable = field[0].fieldIWantToGet

我会得到理想的结果。

这是一张图片,用于阐明我要尝试获得的预期行为。 链接到行为

Struct A在“全局”结构集合中,并且具有一个指向其他Struct的指针数组,例如B

这是我项目中的一些代码。

#define GLOBAL_PTR_ARRAY_SIZE 10

Node* global_node_array[10];  

typedef struct Node{

unsigned char node_id;
int *ptr_array[10];
int ptr_array_size;


}Node;



void append_connection(short position, short destination) {   

    Node* position_ptr = global_node_array[position];        
    Node* destination_ptr = global_node_array[destination];

    if ((*position_ptr).ptr_array_size < GLOBAL_PTR_ARRAY_SIZE) {   
        int current_ptr_array_size = (*position_ptr).ptr_array_size;  

        (*position_ptr).ptr_array[current_ptr_array_size] = destination_ptr;

        (*position_ptr).ptr_array_size++;

}

void print_id(Node* ptr) {

    node* dptr = NULL;

    dptr = ptr->ptr_array[0];

    pptr = (int) (*ptr).ptr_array[0];

    fprintf(stdout, "%d connection to %d exists", (*ptr).node_id, dptr- 
   >node_id);      
}


int main(int argc, char const *argv[])
{
append_connection(0,1);
print_id(global_node_array[0]);

return 0;
}

您的图片显示的是结构数组,而不是指针。 但是下面的示例涵盖了两者。

struct a{
    int field1,field2;
}

struct b{
    struct a m[10];
}

struct c{
    struct a *m[10] 
}




   /* and usage */        
    struct c *x;
    struct b *y;

    x -> m[5].field1;
    y -> m[5] -> fileld1;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM