[学习笔记]C和C++中数组的一些小心得(一)
2014-07-03 00:59
525 查看
本人研二小硕一枚,本身专业是测试计量技术及仪器(总之就是搞硬件的。。),略懂C语言,突然有一天发现了代码的美与其带给我的乐趣,因此自学了Objective-C和C++(ps:虽然学得不咋地,但还是感触颇深);由于华为机试即将来袭,果断抓起书本复习C和C++的基础知识,并练习机试题;觉得自己一个人复习挺没劲,决定将自己复习时的一些小心得记下来并分享给大家。好滴,废话不多说,这次总结了C和C++中数组的一些小心得,希望对大家有点帮助,写的不好,请大家多多包涵。
typeName arrayName[arraySize]
其中,arraySize指定数组元素数目,记住,它必须是整形常数(如10)或const值,当然也可以是常量表达式。
arraySize一定不能是变量,在不熟悉时,常犯的错误如下(我就犯过,所以印象深刻)
我的解决方法是使用new来创建动态数组char * arr [] = new char [];
初始化数组时,提供的值可以少于数组元素数,编译器将剩下的元素自动初始化为0,如:
如果初始化数组时方括号([])内为空,编译器将自动计算元素的个数,有没有很贴心呢~
对了,sizeof运算符可以返回类型或数据对象的长度,其单位为字节,可以将它用于数组名,得到的是整个数组中的字节数,如:
教大家个偷懒小方法!如果你不知道数组的元素个数却想要知道它的话可以这样做!
还有,在列表初始化的时候绝对不能缩窄转化,如:
上面的语句是没法通过编译的,因为浮点数转换成整形是缩窄操作,将会把浮点数小数点后面得数砍掉,因此大家要留心数据的类型。
今天先写这么多,人生第一篇博客!想想还有点小激动呢~
以后隔两天就把自己学习过程中的一些小心得,小感受啥的分享给大家,写得不好不对的地方希望大家慷慨地指出来,大家互相学习,共同进步
声明数组的通用格式:
大家都知道,声明数组的通用格式为: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
上面的语句是没法通过编译的,因为浮点数转换成整形是缩窄操作,将会把浮点数小数点后面得数砍掉,因此大家要留心数据的类型。
今天先写这么多,人生第一篇博客!想想还有点小激动呢~
以后隔两天就把自己学习过程中的一些小心得,小感受啥的分享给大家,写得不好不对的地方希望大家慷慨地指出来,大家互相学习,共同进步
相关文章推荐
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 习题2.8 随机数组的三种生成算法(补) 将bash的实现翻译成比较纯正的bash风格
- C++基础教程 学习笔记(二) 数组、字符串和指针
- c++学习笔记(数组)
- 【C++数据结构学习笔记---栈】用数组实现栈
- C++ Standard Stl -- SGI STL源码学习笔记(07) stl_vector 与 一些问题的细化 3 resize函数剖析
- C++学习笔记--数组
- <C++学习笔记 -- 1> C++中的一些基本概念
- C++ Standard Stl -- SGI STL源码学习笔记(05) stl_vector 与 一些问题的细化 1
- C++学习笔记-2-数组
- c++pirmer 学习笔记之数组
- 一个无聊男人的疯狂《数据结构与算法分析-C++描述》学习笔记 用C++/lua/python/bash的四重实现(7)习题2.8 随机数组的三种生成算法
- C++数组类型学习笔记
- C++学习笔记(四)——数组和指针
- C++ Standard Stl -- SGI STL源码学习笔记(06) stl_vector 与 一些问题的细化 2 push_back函数剖析
- c++学习笔记2——指向字符串的指针数组?
- C++学习的一些笔记-->2:防止头文件多次导入造成重复编译的方法
- C++学习笔记 数组对象
- 学习笔记及一些心得
- 【C++ 学习笔记】 一些奇特的语法和指令
- C/C++学习笔记:指针与数组