struct的赋值的问题
我定义了一个结构体,想对结构体里的元素进行赋值
#include "stdafx.h"
#include <iostream>
using namespace std;
struct boy_To_girl
{
int girl_rank;
boy_To_girl *next;
};
void main()
{
boy_To_girl *p;
p->girl_rank=10;
}
然后进行调试的时候始终报错,就是Acess Violation,也就是p->girl_rank=10;这句出错
这个为什么不能这样赋值?
[解决办法]
语句 boy_To_girl *p 只是产生了一个指针,还没有产生这个结构体的实体,所以不能用 -> 来访问
[解决办法]
楼上正解,应该这样
boy_To_girl p;
p.girl_rank=10;
或者这样
boy_To_girl *p, q;
p = &q;
p->girl_rank=10;
[解决办法]
boy_To_girl *p=new boy_To_girl;
p->girl_rank=10;
[解决办法]
#include "stdafx.h"
#include <iostream>
using namespace std;
typedef struct boy_To_girl
{
int girl_rank;
boy_To_girl *next;
};
void main()
{
//boy_To_girl *p;
boy_To_girl *p=new boy_To_girl;
p->girl_rank=10;
或者
boy_To_girl p;
p.girl_rank=10;
}
[解决办法]
指针没有初始化就去用它了,改为:
boy_To_girl *p = (boy_To_girl*)malloc(sizeof(boy_To_girl));
p->girl_rank=10;
...
free(p);
[解决办法]
你没有了解指针的意义
指针只是一个四个字节的地址。
你的指针指向的地址在哪里?
压根都没有空间,你就赋值,肯定错!