今天练习解题,发现很多基础概念都记不清了,感谢我遇到了你们这些知识点盲区!
1. 二维数组动态创建
根据输入的行row与列col,动态创建二维数组。
// 创建一个m*n的整型数组
int ** num = NULL;
num = new int *[m];
for( int i = 0; i < m; i ++ )
num[i] = new int [n];
常见错误:通常使用动态创建的时候是一维声明时,因而在非声明语句时的等号左值容易出错(好吧,我出错了>.<)如:**num = new int *[m],*num = new int *[m]等等不胜枚举。记忆诀窍可以是第一次动态分配时,等号左侧为原来的变量名,不加任何*或[];等号右侧为减少一个指针符,以此类推。好吧,感觉总结不是很有力度,见谅。
2. 字符串输入,char型数组和string的区别
刚才遇见的问题是:将字符串中的空格替换为指定字符串。然而在C++下,string类也好,char型数组也好,都不支持直接的cin操作。另一方面,又不想止步于使用scanf,于是百度搜索结果如下。
// 输入两个字符串,都可包含空格符
char input[1000] = {0}, sub[1000] = {0};
cin.getline( input, 1000 );
cin.getline( sub, 1000 );
调用cin的函数getline即可,不保存换行符,如若需要可替换为get函数,则保留换行符。虽然这些知识好像在C++书里都有,但是不用真的忘了呀。
3. 动态字符串的初始化问题
同样是解替换字符串的问题时遇见的,动态生成字符串时的初始化问题。我没有找到相应的库函数,而是改变思路,将初始化时申请的字符串空间扩大一位,在操作之后末尾位赋值为0,即可。感谢师弟!
// outlen 为输出字符串的长度
output = new char [outlen+1];
{
// 中间处理代码
}
output[outlen] = 0;
加上字符串尾,输出正常。
题外话:
记录一下最近的心路感受吧。近期我尝试找实习,实话说挺心慌的,目前没有收到任何电话面试或面试通知。心理的情绪是纠结,紧张,害怕,非常复杂的。其实心中理想的去处,自己是明确的,只是觉得目前自己的能力达不到,故而每天复习的效率也不高,情绪低气压,也不太自信。
刚才一个凑巧,发现曾经的同伴已经远不及其项背了,心中的感觉真的非常复杂。但是,转念一想,曾经的同伴,与自己能力相似,当然对方有很多我值得学习的地方,我也从其身上收获了很多做事做人的经验,所以不必那么沮丧。企业的面试,自己好好准备,总有一天会有结果,抛出运气的成分,请相信自己,可以做到很棒。一个人的能力与环境,与机遇都密切相关,有时不可过多自责。当然,对于过去一年半那些我荒废的时间,我还是想说,现在看到差距了吧。。。哈哈哈。还记得刚把节奏放慢的时候,自己一度陷入无限的焦虑之中,玩不好,休息不好,但也学习不带劲。这与自己失去目标,但又意识到自己堕落颓废密切相关。现在一切过去,醒悟,也是好事。
继续向前吧!其实并没有那么难!请不要给自己设限,相信自己!一切好运!
未来回看现在的这些点滴,应该感觉很奇妙吧!哈哈哈,记录自己的小嘀咕&小低谷。
安啦!撤离实验室~
欢迎各路大神留言讨论!