C++ Primer 学习笔记——第4章 数组和指针
来源:互联网 发布:百度seo是什么 编辑:程序博客网 时间:2024/06/05 00:51
C++ Primer 学习笔记——
第4章 数组和指针
数组和Vector的区别是:数组的长度是固定的,也就是说Vector的长度是可变的.这就是为什么objC有Array和MutableArray,即数组和可变数组一说.可见,可变数组是对c中数组的扩展.
数组和Vector的区别2:数组比Vector低级.也就是说,什么时候用数组.只有机器卡死的情况才用,不卡不用.
数组之于指针,相当于Vector之于迭代器.
见了鬼了,数组真难用,没有size,没有push_back,要改变长度,只能全部给新数组,既然这么没用,可以不学吗?
不到万不得已,千万不要用数组.
这要看情况?学的主要原因是,因为叔叔们在用,假定某一天项目的功能,恰好叔叔们曾经写过,我们拿来照抄,但要略微修改,这个时候看不懂就不好办,所以要会读会改.但我们自己不用.就像改AS2游戏,换换UI,难道改成AS3吗?同样的道理,数组就不该改成Vector.
4.1数组
不像JS,AS这些脚本语言一样自由.当然这种自由是以牺牲效率为代价的.
定义数组有很多规矩,重点是方括号中的数组长度.无非这2种情况
1,字面值如123567,
2,整型常量
3,变量和不是最先就定义好的常量不行
4.1.1数组的定义和初始化
1.显示初始化数组元素
2.特殊字符数组
3.不允许数组直接复制和赋值
定义数组并取数组值
4.1.2数组操作
数组大小有专门的类型(令人惊奇!),代替普通的unsigned,叫 size_t
//范例1 下标取值int main (int argc, char * const argv[]) { const size_t arr_size=3;int arr[arr_size]={1,2,3};//初始化列表 for (int i=0; i!=arr_size; ++i) {printf("%i",arr[i]); } return 0;}
把arr_size改成6:
#include <iostream>#include <string>using std::string;//范例1 整型数组下标取值int main (int argc, char * const argv[]) { const size_t arr_size=6;int arr[arr_size]={1,2,3};//初始化列表 for (int i=0; i!=arr_size; ++i) {printf("%i",arr[i]); } return 0;}输出123000,这很好理解,因为arr默认长度是6,实际填了3个:123,剩下的没填,就是000.
//范例2 字符数组下标取值int main (int argc, char * const argv[]) { const size_t arr_size=3;char arr[arr_size]={'A','B','C'};//字符数组for (int i=0; i!=arr_size; ++i) {printf("%c",arr[i]); } return 0;}输出ABC.
#include <iostream>#include <string>using std::string;//范例2 字符串数组下标取值int main (int argc, char * const argv[]) { const size_t arr_size=3;string arr[arr_size]={ "A", "B" , "C"};//字符数组for (int i=0; i!=arr_size; ++i) {printf("%s",arr[i].c_str()); } return 0;}
4.2指针的引入
指针的标志是*, 星号, 解引用操作符 dereference operator
还可以用++ 增量, increment operator
#include <iostream>#include <string>using std::string;//指针范例1 指针自增int main (int argc, char * const argv[]) { const unsigned arr_size=3;int arr[arr_size]={1,2,3};//初始化列表int *ip=arr;//取得指针for (int i=0; i!=arr_size; ++i) {printf("%i",*ip++); } return 0;}输出:123Running…
如果把const unsigned arr_size的值改成6,输出:
Running…
123000
#include <iostream>#include <string>using std::string;int main (int argc, char * const argv[]) { int arr[3]={1,2,3};//初始化列表int *ip=arr;printf("%i",*ip);ip=arr;int *ip2=ip+1;printf("%i",*ip2);int *ip3=ip+2;printf("%i",*ip3);return 0;}
- 【C++Primer学习笔记】第4章 数组和指针
- C++ Primer 学习笔记——第4章 数组和指针
- C++Primer学习笔记4 数组和指针
- C++Primer学习笔记第四章(4/18) 数组和指针
- c++primer学习笔记3 - 数组和指针
- C++primer学习笔记——引用和指针
- c primer plus第10章总结:数组和指针
- c++ primer 第五版学习笔记-第6章-返回数组指针的函数和函数指针的数组
- C++primer学习笔记第四章-数组与指针
- C++Primer笔记 第四章 数组和指针
- C++Primer笔记3(第四章-数组和指针)
- C++ Primer 学习笔记:数组和指针
- C和指针 学习笔记—第1-2章
- C和指针 学习笔记—第3章
- 【C和指针】第1—2章学习笔记
- C++ Primer学习笔记---第四章 数组和指针
- 数组和指针 - 1【C++ Primer 学习笔记 - 第四章】
- 数组和指针 - 2【C++ Primer 学习笔记 - 第四章】
- 通过现象我能看到的是...
- Rap框架练习
- 3DS美版的官方公告,呃……我的3ds啊
- 数字图像处理的研究方法
- 王爽《汇编语言》课后作业( P160(2) )
- C++ Primer 学习笔记——第4章 数组和指针
- Oracle DBA之为网页版sqlplus(iSQL*Plus)增加一个dba用户
- Linux C 字符串操作的基本使用(上)
- 动态壁纸-蝴蝶
- Powner Designer从数据库 反向生成PDM报错 无法列出表清单 SQLSTATE=00822
- 思绪膨胀,做出龙飞凤舞,怪诞异常的程序启动界面(VB6.0)[已完成,有具体代码,有第二章]
- VB6 根据进程ID(PID)获取窗体句柄
- sqlserver2000 简单的存储过程
- 文本文件读写