错误!

liuzhitang 2005-12-10 11:34:07
#include<iostream>
using namespace std;
class T
{
public:
T()
{
state=NULL;
num=NULL;
charge=NULL;

}
void test();
int num;
int charge;
char state;
T *str[2];//这个到底是什么意思
};

void main()
{
T *obj=new T();
int *p=&obj->str[0]->num;
int *p1=&obj->str[0]->charge;
*p=0;//为什么不能往这个地址赋值!
cout<<p<<endl;
cout<<p1<<endl;
}
...全文
76 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zoezinsser 2005-12-11
  • 打赏
  • 举报
回复
mark
liuzhitang 2005-12-11
  • 打赏
  • 举报
回复
怎么给str[2]分配内存
cunsh 2005-12-10
  • 打赏
  • 举报
回复
如楼上所说.
指针没有初始化就是野指针.

另外.如果是对指针赋0值用NULL 对其他类型的也这样用可不是好风格呀.
handsomerun 2005-12-10
  • 打赏
  • 举报
回复
&的优先级高还是
->的优先级高,
偶忘记了…………
dx30611 2005-12-10
  • 打赏
  • 举报
回复
T *str[2]没有分配空间,不能用指针操作
handsomerun 2005-12-10
  • 打赏
  • 举报
回复
T *str[2];//这个到底是什么意思
一个数组
有两个元素
每个元素都是T *形


int *p=&obj->str[0]->num;
int *p1=&obj->str[0]->charge;
*p=0;//为什么不能往这个地址赋值!


这个代码实在是=@#¥%^&

几个问题
你的T *obj=new T();
那么以后obj中的T *str[2];
那个str中的元素应该是NULL
那么
通过obj->str[0]应该就是NULL了


另外
int *p=&obj->str[0]->num;
看你的意思应该是
int *p=&(obj->str[0]->num);


*p=0;//为什么不能往这个地址赋值!

这个p应该还是个NULL吧
没有指向具体的对象,所以
不能赋值
dx30611 2005-12-10
  • 打赏
  • 举报
回复
T *str[2];//链表的功能
表示这个节点可以指向两个跟它同类型的节点

15,440

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 非技术区
社区管理员
  • 非技术区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧