1.cin输入错误的内容后记得用cin.clear()。
for(i = 0; i < limit; i++)
{
cin >> temp;
if(!cin) //bad input
{
cin.clear();
while(cin.get() != '\n')
continue;
cout << "Bad input,input process terminated.\n"
break;
}
}
2.用指针表示二维数组
假如有这么一个二维数组int data [3][4] = {{1,2,3,4}, {1,2,3,4}, {1,2,3,4}}
,现在想在调用函数的形参表里,用指针来表示这个数组,该如何表示呢?
int sum(int (*ar2) [4], int size);
当然,也可以直接用int sum(int ar2[][4], int size);
如果用int *ar2[4]
这是错误的。因为它表示一个数组,这个数组由四个指向int的指针组成。
3.遍历字符串的一种方法
while(*str)
{
statements...
str++;
}
字符串末尾自动添加一个结束标志(这正是字符串与数组的不同之处)“\0”。
4.每次用完指针后记得释放指针
char *ps = buildStr(ch, times);
cout << ps << endl;
delete [] ps;
ps. delete [] ps
还是delete ps
是有讲究的。一般来说,如果声明的时候是按数组声明的,如char *ps = new char[3];
,那就用delete [] ps
,否则用另一个。如果对数组用delete ps
的话,会导致只调用ps[0]的destructor。
5.函数指针
假如有这样一个函数double pam(int);
要想声明一个指向它的函数指针:double (*pf) (int); pf = pam;
。
是的,就是把函数名(pam)换成一个指针(*pf)。
但是注意,如果写成double *pf (int);
,这里指的是一个函数,它的返回值为指向double的指针。