gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 14:41:35 24 4
gpt4 key购买 nike

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

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

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

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

现在我想知道的是这个。我怎样才能做到这一点?当我尝试这个时,我得到“表达式必须具有结构或 union 类型”

当我在 Java 中尝试时,我可以做到这一点

int variable = field[0].fieldIWantToGet

我会得到想要的结果。

这是一张图片来阐明我想要实现的预期行为。 Link to behavior

其中结构 A 位于结构的“全局”集合中,并且具有指向其他结构(例如 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;

关于c - C中通过指向指针的指针从结构体中获取值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54855102/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com