
请帮我看看下面代码哪里出错了,谢谢哈!
#include<iostream>usingnamespacestd;classparent{inti;int*j;public:parent(inta=0,int*b...
#include<iostream>
using namespace std;
class parent{
int i;
int* j;
public:
parent(int a=0,int* b=0){
i=a;
j=b;
cout<<i<<endl<<(*j)<<endl;
}
~parent(){
cout<<"i 的值为"<<endl;
cout<<"j的值为"<<endl;
}
};
void main(){
int n=7;
int* m;
*m=n;
parent a(3,m);
parent b=a;
} 展开
using namespace std;
class parent{
int i;
int* j;
public:
parent(int a=0,int* b=0){
i=a;
j=b;
cout<<i<<endl<<(*j)<<endl;
}
~parent(){
cout<<"i 的值为"<<endl;
cout<<"j的值为"<<endl;
}
};
void main(){
int n=7;
int* m;
*m=n;
parent a(3,m);
parent b=a;
} 展开
3个回答
展开全部
这个不对 *m=n;
估计你是想
m=&n;
m是个指针。
估计你是想
m=&n;
m是个指针。
更多追问追答
追问
恩,是这个原因。但是编译时为什么不报错啊?
追答
*m= n表示m指针出值为n,但是你的m还没有初始值呢。
c 就是这样的。
展开全部
cout<<"i 的值为"<<i<<endl;//cout<<"i 的值为"<<endl;
cout<<"j的值为"<<j<<endl;//cout<<"j的值为"<<endl;
m=&n;//*m=n;
cout<<"j的值为"<<j<<endl;//cout<<"j的值为"<<endl;
m=&n;//*m=n;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
我也是最近才自学c++的。。。姑且说上几点错误,顺便也能提高自身功夫。
1.先说错误:
经过我的debug,认为在这一行,(倒数第三行) ,*m=n;
这个赋值语句,本甚是没有错的,但是一般使用指针时,会对指针变量进行初始化赋值。
该语句没有对指针变量 m 赋初值,而直接进行间接引用,是一个编译错误。换句话说,指
针变量是 m,而不是 *m;必须显示的对 m 赋初值,否者,编译器不知道 m 所指向的地址,
如何能把 n 的值赋给 *m 间接引用的地址呢?
2.修改如下:
m = &n; //如此做,就对变量 m 赋初值了!
3.额外建议:
(1.)析构函数 ~parent() 中的cout 语句毫无意义,建议增加改成如下:
~parent()
{
cout << "i 的值为" << i << endl;
cout << "j的值为" << j<< endl;
}
(2.)为了以后便于修改,最好还是遵循一般程序员编写程序的惯例,养成好的习惯,比如,空格、空行,下面是我修改的:
//eg.001 (工程名) : eg.001.cpp (文件名)
//使用析构函数 (文件目的)
//(此外,还可以加上时间、地点等创作信息)
#include <iostream>
using namespace std;
class parent
{
int i;
int* j;
public:
parent(int a,int *b=0)
{
i = a;
j = b;
cout<<i<<endl<<(*j)<<endl;
}
~parent()
{
cout << "i 的值为" << i << endl;
cout << "j的值为" << j<< endl;
}
};
void main()
{
int n=7;
int *m ;
m = &n;
parent a(3,m);
parent b=a;
return;
}
1.先说错误:
经过我的debug,认为在这一行,(倒数第三行) ,*m=n;
这个赋值语句,本甚是没有错的,但是一般使用指针时,会对指针变量进行初始化赋值。
该语句没有对指针变量 m 赋初值,而直接进行间接引用,是一个编译错误。换句话说,指
针变量是 m,而不是 *m;必须显示的对 m 赋初值,否者,编译器不知道 m 所指向的地址,
如何能把 n 的值赋给 *m 间接引用的地址呢?
2.修改如下:
m = &n; //如此做,就对变量 m 赋初值了!
3.额外建议:
(1.)析构函数 ~parent() 中的cout 语句毫无意义,建议增加改成如下:
~parent()
{
cout << "i 的值为" << i << endl;
cout << "j的值为" << j<< endl;
}
(2.)为了以后便于修改,最好还是遵循一般程序员编写程序的惯例,养成好的习惯,比如,空格、空行,下面是我修改的:
//eg.001 (工程名) : eg.001.cpp (文件名)
//使用析构函数 (文件目的)
//(此外,还可以加上时间、地点等创作信息)
#include <iostream>
using namespace std;
class parent
{
int i;
int* j;
public:
parent(int a,int *b=0)
{
i = a;
j = b;
cout<<i<<endl<<(*j)<<endl;
}
~parent()
{
cout << "i 的值为" << i << endl;
cout << "j的值为" << j<< endl;
}
};
void main()
{
int n=7;
int *m ;
m = &n;
parent a(3,m);
parent b=a;
return;
}
追问
谢谢。呵呵
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询