当前位置: 技术问答>linux和unix
菜鸟请教--关于指向结构体指针的赋值
来源: 互联网 发布时间:2015-08-22
本文导语: 我自定义了一个结构体,比如 typedef nodeType { char *rarVal; nodeType *nextNode; }; 我应该怎么对这个结构体进行初始化和赋值呢? int main() { nodeType *node; node->rarVal = (char *)malloc(20); strcpy(node->ra...
我自定义了一个结构体,比如
typedef nodeType
{
char *rarVal;
nodeType *nextNode;
};
我应该怎么对这个结构体进行初始化和赋值呢?
int main()
{
nodeType *node;
node->rarVal = (char *)malloc(20);
strcpy(node->rarVal, "test");
node->nextNode = NULL;
...
}
上面这个main还属里面的赋值有什么问题,它老是出现段错误,我不是很明白。请高人指教。
typedef nodeType
{
char *rarVal;
nodeType *nextNode;
};
我应该怎么对这个结构体进行初始化和赋值呢?
int main()
{
nodeType *node;
node->rarVal = (char *)malloc(20);
strcpy(node->rarVal, "test");
node->nextNode = NULL;
...
}
上面这个main还属里面的赋值有什么问题,它老是出现段错误,我不是很明白。请高人指教。
|
int main()
{
nodeType *node;
node = (nodeType *)malloc(sizeof(nodeType));
node->rarVal = (char *)malloc(20);
strcpy(node->rarVal, "test");
node->nextNode = NULL;
...
free(node->rarVal);
free(nodeType);
}
{
nodeType *node;
node = (nodeType *)malloc(sizeof(nodeType));
node->rarVal = (char *)malloc(20);
strcpy(node->rarVal, "test");
node->nextNode = NULL;
...
free(node->rarVal);
free(nodeType);
}
|
#include
#include
#include
struct nodeType
{
char *rarVal;
struct nodeType *nextNode;
};
typedef struct nodeType NodeType;
int main()
{
NodeType test,*node;
node=&test;
node->rarVal = (char *)malloc(20);
strcpy(node->rarVal, "test");
node->nextNode = NULL;
printf("%sn",node->rarVal);
}
说明一个指针nodeType *node;然后这样赋值是不行的,node->rarVal = (char *)malloc(20);
因为node这个指针文指向任何有效的区域,所以就无法引用它所指向的结构成员,malloc是正常返回的,但是node->rarVal 的引用是错误的,也根本无法赋值。
#include
#include
struct nodeType
{
char *rarVal;
struct nodeType *nextNode;
};
typedef struct nodeType NodeType;
int main()
{
NodeType test,*node;
node=&test;
node->rarVal = (char *)malloc(20);
strcpy(node->rarVal, "test");
node->nextNode = NULL;
printf("%sn",node->rarVal);
}
说明一个指针nodeType *node;然后这样赋值是不行的,node->rarVal = (char *)malloc(20);
因为node这个指针文指向任何有效的区域,所以就无法引用它所指向的结构成员,malloc是正常返回的,但是node->rarVal 的引用是错误的,也根本无法赋值。
|
就是,指针没有初始化,指向一个正确的变量的地址,可以是一个自动变量的地址,也可以是用户
动态分配的一块内存的地址。
动态分配的一块内存的地址。