我在c中创建了一个链表结构
struct node{
int value;
struct node* next;
};
Run Code Online (Sandbox Code Playgroud)
在列表开头添加节点的方法:
void addFirst(struct node *list, int value){
struct node *new_node = (struct node*) malloc (sizeof (struct node));
new_node->value = value;
new_node->next = list;
list = new_node;
}
Run Code Online (Sandbox Code Playgroud)
我创建了一个列表(malloc和所有东西),然后调用这个方法,它在方法中添加了新节点,但是当我回到我的main时,我的旧列表保持不变.使用DDD调试器检查所有内容.这怎么可能?我无法更改方法签名,所以必须这样做.
我有两个结构:
struct bets{
int bets[36];
int last_bet;
}bets
struct board{
int type;
bets *bet;
}board
Run Code Online (Sandbox Code Playgroud)
我创造了一大块鲥鱼记忆sizeof(board)
.所以,我在共享内存中得到了一个指向Board的指针(以免称之为ptr).我创建了一个新的board
和bets
结构
board *b
,bets * bts
....添加board->bet = bts
.现在,我将"b"复制到了ptr
memcpy(ptr, bts, sizeof(board))
.我可以访问ptr->type
.但是当我尝试访问时
ptr->bet->last_bet
,我遇到了分段错误错误.
我也试过像这样复制:
board *b;
memcpy(ptr, b, sizeof(board));
bets *bts;
memcpy(ptr->bet, bts, sizeof(bets)).
Run Code Online (Sandbox Code Playgroud)
仍然得到分段错误错误.
如何将两个struct one复制到另一个内部并仍然可以访问嵌套的?