结构变为 NULL
struct becomes NULL
我想实现一个类似于 OOP 的链表实现。
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
typedef struct node {
char data[100];
struct node *next;
struct node *prev;
}Node;
typedef struct treeNode {
char treeData[100];
struct treeNode *left;
struct treeNode *right;
}TreeNode;
typedef struct sql_struct{
Node *head, *tail;
}StackQueueList;
typedef struct tree {
TreeNode *root;
}Tree;
void initStackQueueList(StackQueueList* a) {
a->head = a->tail = NULL;
}///initStackQueueList
Tree* initTree (Tree* a) {
a->root = NULL;
}///newTree
但问题是每当我使用 initStackQueueList()
它总是使指针看起来是 NULL
这有点有意义因为我希望其中的 VALUES 为空,而不是 POINTER本身为空。所以很可能,我在这里实施了一些错误,我无法解决这个问题,所以我正在寻求帮助! :)
实施示例:
static const StackQueueList *dqFriend1, *dqFriend2, *dqMyself, *dqVirus;
void initQueues () {
initStackQueueList(dqFriend1);
initStackQueueList(dqFriend2);
initStackQueueList(dqMyself);
initStackQueueList(dqVirus);
}
=更正版本=
StackQueueList *dqFriend1, *dqFriend2, *dqMyself, *dqVirus;
*dqFriend1 = *dqFriend2 = *dqMyself = *dqVirus = (StackQueueList*) malloc(sizeof (StackQueueList));
void initQueues () {
initStackQueueList(dqFriend1);
initStackQueueList(dqFriend2);
initStackQueueList(dqMyself);
initStackQueueList(dqVirus);
}
但现在我遇到了这些错误:
error: conflicting types for 'dqFriend1'|
error: incompatible types when assigning to type 'StackQueueList' from type 'struct StackQueueList *'|
您应该先为指针dqFriend1
、dqFriend2
、dqMyself
、dqVirus
分配space。否则他们的成员就没有位置了。
eg. dqFriend1 = (StackQueueList*)malloc(sizeof(StackQueueList));
我想实现一个类似于 OOP 的链表实现。
#include <ctype.h>
#include <string.h>
#include <stdlib.h>
typedef struct node {
char data[100];
struct node *next;
struct node *prev;
}Node;
typedef struct treeNode {
char treeData[100];
struct treeNode *left;
struct treeNode *right;
}TreeNode;
typedef struct sql_struct{
Node *head, *tail;
}StackQueueList;
typedef struct tree {
TreeNode *root;
}Tree;
void initStackQueueList(StackQueueList* a) {
a->head = a->tail = NULL;
}///initStackQueueList
Tree* initTree (Tree* a) {
a->root = NULL;
}///newTree
但问题是每当我使用 initStackQueueList()
它总是使指针看起来是 NULL
这有点有意义因为我希望其中的 VALUES 为空,而不是 POINTER本身为空。所以很可能,我在这里实施了一些错误,我无法解决这个问题,所以我正在寻求帮助! :)
实施示例:
static const StackQueueList *dqFriend1, *dqFriend2, *dqMyself, *dqVirus;
void initQueues () {
initStackQueueList(dqFriend1);
initStackQueueList(dqFriend2);
initStackQueueList(dqMyself);
initStackQueueList(dqVirus);
}
=更正版本=
StackQueueList *dqFriend1, *dqFriend2, *dqMyself, *dqVirus;
*dqFriend1 = *dqFriend2 = *dqMyself = *dqVirus = (StackQueueList*) malloc(sizeof (StackQueueList));
void initQueues () {
initStackQueueList(dqFriend1);
initStackQueueList(dqFriend2);
initStackQueueList(dqMyself);
initStackQueueList(dqVirus);
}
但现在我遇到了这些错误:
error: conflicting types for 'dqFriend1'|
error: incompatible types when assigning to type 'StackQueueList' from type 'struct StackQueueList *'|
您应该先为指针dqFriend1
、dqFriend2
、dqMyself
、dqVirus
分配space。否则他们的成员就没有位置了。
eg. dqFriend1 = (StackQueueList*)malloc(sizeof(StackQueueList));