C++问题,为什么输出的是地址?,。。

#include<iostream>#include<cstring>#include<cstdlib>usingnamespacestd;classComplex{pr... #include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
class Complex {
private:
double r,i;
public:
void Print() {
cout << r << "+" << i << "i" << endl;
}
Complex &operator=(char *p)
{
char t[4];
strcpy(t,p);
r=t[0]-'0';
i=t[2]-'0';
return *this;
}
};
int main() {
Complex a;
a="3+4i"; a.Print();
a="5+6i"; a.Print();
return 0;
}
展开
 我来答
志当存高远389
2015-05-29 · 知道合伙人互联网行家
志当存高远389
知道合伙人互联网行家
采纳数:11236 获赞数:20406
08年毕业,一直从事计算机行业,从基层做起。有较强的实践操作能力。

向TA提问 私信TA
展开全部
问题主要是二维数组的创建问题函数可改为下面的函数,加的语句我注释了,动态分配内存。
其次是释放内存的函数最好也改一下,这我不太清楚,我写的贴在下面了。
最后,main()函数最好加上return 0;不然会有警告。(个人看法)
#include<iostream>
#include <cstdlib>
#include<ctime>
#include<cstring>
using namespace std;

void create( char **&ap, int n )
{
srand(time(0)); // 可简化
ap = new char*[n]; // 此语句不可少
int a;
int i,j;
a=rand()%2;
for(i=0;i<n;i++) {
ap[i] = new char[n];
for(j=0;j<n;j++) {
if (a==0)
ap[i][j]='#';
else
ap[i][j]='.';
}
}
}

void output(char**&ap,int n )
{ int i,j;
for(i=0;i<n;i++)
{ for(j=0;j<n;j++)
cout<<ap[i][j]<<" ";
cout<<endl;

}
}

void freeArr(char**&ap,int n)
{
for( int i = 0; i < n; i++ )
delete [] ap[ i ];

delete [] ap;
}

int main()
{
char **ap = NULL;

int n;
cout << "输入矩阵的阶:";
cin >> n;
create( ap, n );

cout << "\n形成矩阵:\n";
output( ap, n );

freeArr(ap, n);
return 0;
}
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式