您的位置:首页 > 编程语言 > C语言/C++

[学习笔记]C和C++中数组的一些小心得(一)

2014-07-03 00:59 525 查看
本人研二小硕一枚,本身专业是测试计量技术及仪器(总之就是搞硬件的。。),略懂C语言,突然有一天发现了代码的美与其带给我的乐趣,因此自学了Objective-C和C++(ps:虽然学得不咋地,但还是感触颇深);由于华为机试即将来袭,果断抓起书本复习C和C++的基础知识,并练习机试题;觉得自己一个人复习挺没劲,决定将自己复习时的一些小心得记下来并分享给大家。好滴,废话不多说,这次总结了C和C++中数组的一些小心得,希望对大家有点帮助,写的不好,请大家多多包涵。

声明数组的通用格式:

大家都知道,声明数组的通用格式为:

typeName arrayName[arraySize]
其中,arraySize指定数组元素数目,记住,它必须是整形常数(如10)或const值,当然也可以是常量表达式。
arraySize一定不能是变量,在不熟悉时,常犯的错误如下(我就犯过,所以印象深刻)

void sort(const char * str,int n){
…
char arr
;     //在此处编译器就会报错,因为n是变量
…
}


我的解决方法是使用new来创建动态数组char * arr [] = new char [];

数组下标:

编译器是不会检查数组使用的下标是否有效,如只有12个月份的月份数组month[],你将一个值赋给month[250],编译器并不会报错,因此确保程序只使用有效下标很有必要。

初始化:

如果没有初始化函数中的定义的数组,则元素值将是不确定的,这意味数组的元素值为以前停留在内存单元的值,所以一般情况下最好还是不要去碰这些没有初始化过的元素为妙。

初始化数组时,提供的值可以少于数组元素数,编译器将剩下的元素自动初始化为0,如:

long totals[500] = {1};     //仅totals[0]为1,剩下的499个元素均为0


如果初始化数组时方括号([])内为空,编译器将自动计算元素的个数,有没有很贴心呢~

对了,sizeof运算符可以返回类型或数据对象的长度,其单位为字节,可以将它用于数组名,得到的是整个数组中的字节数,如:
int things[] = {1,2,3,4};
int n = sizeof things;  //此时n为16,因为一个int占4个字节


教大家个偷懒小方法!如果你不知道数组的元素个数却想要知道它的话可以这样做!
int num_elements = sizeof things / sizeof (int);
这样就可以知道这个未知长度数组的元素个数啦!

还有,在列表初始化的时候绝对不能缩窄转化,如:
long island[] = {18,76,8.0};    //oops

上面的语句是没法通过编译的,因为浮点数转换成整形是缩窄操作,将会把浮点数小数点后面得数砍掉,因此大家要留心数据的类型。

今天先写这么多,人生第一篇博客!想想还有点小激动呢~
以后隔两天就把自己学习过程中的一些小心得,小感受啥的分享给大家,写得不好不对的地方希望大家慷慨地指出来,大家互相学习,共同进步
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: