帮小弟看看这个

来源:百度知道 编辑:UC知道 时间:2024/09/26 14:23:43
小弟 刚学c++ 遇到了问题
#include <iostream>
struct field
{
int x;
int y;
};

int main()
{
char *ptr;
char val,*null;

if(ptr == null) {
ptr->field = val;
}
return 0;
}
死活编译不过去 老大们帮我调一下 讲讲原理吧 小弟先谢了

结构是一个“模具”,它本身是不能干什么的,只有用它做出来的产品才能使用。
况且。。。ptr->field = val;是在是很莫名的调用。。
ptr还没赋过值(指向某个char变量),你怎么调用???
如果你想用指针调用field结构的变量,
那么指针类型也要相符,也就是说,指针也要是field类型的。

你对指针还不够理解。
为什么指针会有类型??
指针的实际作用是告诉编译器,该在内存空间里为指针所指向的对象分配多大的内存。
如果
int *b;
那么编译器就知道:
在内存里分配一个4字节大小的空间,同时这个空间的“门牌号”是b
同样field结构在内存里也是有大小的,必须用相应的指针才能让编译器分配相应大小的空间。

基本就是这个意思。。如果还是不理解,那就只有靠你自己以后再理解了。

你的ptr是个什么东西,凭什么就调用了field,你应该赶快找一本入门书籍从头到尾好好看看,然后再来研究这个问题,现在是没有意义的。整个看来你的程序基础约等于零,根本就没法调这个程序。还是回去从头开始学习吧。。

#include <iostream>
using namespace std;

struct field
{
int x;
int y;
};

int main()
{

struct field f, *ptr;

f.x = 1;
f.y = 2;

cout << f.x<<endl;
cout << f.y<<endl;

ptr = &f;

cout << ptr->x<<endl;
cout << ptr->y<<endl;

return 0;
}

<