在C中的函数中为外部变量初始化结构

时间:2018-12-24 21:41:55

标签: c struct

我对C语言很不好,但是我知道这是可能的,只是解决问题就可以了。

我正在尝试初始化/更改通过C函数传递的Node变量。我知道这可以通过操纵通过地址空间更改变量来实现,但是Node / struct呢?在main中调用add(Node * start)函数后,我传入的Node * head仍然为NULL。

这可能是由于未操纵正确的地址/指针吗?

代码(node.h是具有int val和Node * both的结构):

#include <stdio.h>
#include <stdlib.h>
#include <stdint.h>

#include "node.h"

Node* xor(Node *x, Node *y);
void add(Node *start, int val);
Node find(Node start, int idx);

int main() 
{   
    Node *head = NULL;
    int i = 0;

    add(head, 5);
    fprintf(stdout, "%p\n", head);
//  for(i = 0; i < 10; i++) 
//  {
//      add(head, i);
//  }   
    return 0;
}

Node* xor(Node *x, Node *y) 
{
    return (Node*)((uintptr_t)(x) ^ (uintptr_t)(y));
}

void add(Node *start, int val) 
{
    if(start == NULL)
    {
        start = (Node *)malloc(sizeof(Node));
        start->val = val;
        start->both = NULL;
        fprintf(stdout, "%d, %p\n", start->val, start->both);
    }
}

0 个答案:

没有答案