我对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);
}
}