您的位置:首页 > 职场人生

从零开始--为面试做准备,代码篇(一)

2014-01-24 15:13 211 查看
开通了新的博客,写下自己的小白历程 2014.1.21起。都是在A题过程中所遇到的困难,记录下解决方式。

1,While(cin)会进行无限循环,估计和构造函数有关,而改为while(cin) cin>>n;则正常输入,这里while(cin)和while(1)都可表示无限循环,然而,while(cin)有可能被错误输入终止,例如n是int型的,而输入一个char则输入终止。

 

2,如何用new开二维数组:定义二维数组array[i][j]

(1)定义一维代替

char *array;

array = new char[x*y];

用*(array+i*y+j);来表示array[i][j]

(2)定义一个二维数组

char **array;

array = new char *[x];

for(int i=0;i<x;i++)

    array[i] = new char[y];

用array[i][j]直接表示

但是:注意delete

for(i=0;i<x;i++)

    delete[] array[i];

delete[] array;

 

3,error expected constant expression:希望是常量表达式

出现在如果A[M]
中的MN未知,需要运行的时候从cin进来,那么直接定义A[M]
是无法事先分配空间的,用动态分配解决。

 

3,error C2109: subscript requires array or pointer type 下标需要数组或者指针形式

当定义int *A; A=new int[M*N];后直接使用A[i][j]会出现这样的问题,不可以直接访问,因为它本质上是一个一维数组,改成*(A+i*N+j)进行访问即可。

 

4,记录运算符重载error C2803: 'operator +' must have at least one formal parameter of class type

两个不能都是C++的标准类型,以防止用户修改用于标准类型数据的运算符性质。重载的运算符必须和用户定义的类型对象一起使用,参数至少应有一个是类对象(或者类对象的引用)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  面试 c++