我有一个方法应该在数组末尾添加一个“节点”。当我找到一个存储值的地方(有效)时,这奇怪地从旧地址中删除了值。
void appendAtEndOfArray(struct node * item,struct node * arrayPointer){
int i=0;
while (arrayPointer[i].name!='\0') {
i++;
}
arrayPointer[i]=*item; // after this the original memory at &item is changed to '\0'
}
这可能很容易,但我是 C 和整个指针的新手....
我这样调用方法:
void addVertice(char source, char destination,int cost){
struct node * sourceNode = addNode(source);
struct node * destinationNode = addNode(destination);
appendAtEndOfArray(destinationNode,sourceNode->children);
appendAtEndOfArray(sourceNode,destinationNode->parents);
}
我的节点定义如下:
struct node {
char name;
bool visited;
int distance;
struct node *children[30];
struct node *parents[30];
} nodes[30];
struct node * addNode(char name){
int n=getNodeByName(name); // if exists reuse
if (n==-1) {
n=++lastNodeIndex;
}
nodes[n].name = name;
nodes[n].visited=false;
return &nodes[n];
}
有人可以指出我做错了什么吗?