数组读书笔记
来源:互联网 发布:移动crm软件作用 编辑:程序博客网 时间:2024/05/16 19:51
(注:下标的引用优先级高于间接访问)
1:数组名的值是一个指针常量,也就是数组第一个元素的地址,只有当数组名在表达式中使用时,编译器才会为它产生一个指针常量。
2:不能用赋值符把一个数组中的所有元素复制到另一个数组,只能通过循环来实现。
3:C的下标引用和间接访问时一样的。
例如: int *ap=arr;
*(ap+2)<====>ap[2];
4: ap[-1] ====>*(ap-1)
5: int arry[10] 2[arry]=*(2+arry).
6: 当你根据某个固定数目的增量在一个数组中移动时,使用指针比使用数组效率更高(指针中增量是1,并且机器具有地址自动增量模型)。
7:声明为寄存器变量的指针比位于静态内存和堆栈中指针的效率更高。
8:多维数组的理解
eg: int arr[6][10] ======>c是一个包含6个元素的数组,其中它的每个元素又是一个包含了10个元素的数组。
9:多维数组的存储顺序(线性存储)
按照右边下标率先变化的原则,称为行主序
10:指向数组的指针
eg: int vector[10], *vp=vector; √(vector和vp具有相同的类型,所以合法)
int matrix[3][10], *mp=matrix; ×(matrix并不是一个指向整形的指针,而是一个指向整形数组的指针)
正确的声明方式: int (*mp)[10]=matrix; (使mp指向matrix的第一行);
11:如果想逐个访问matrix中的元素而不是逐行访问,有以下两种声明方式;
eg: int *mp=&matrix[0][0];
int *mp=matrix[0];
12:作为函数参数的多维数组
由于多维数组名指的是另外一个数组,编译器需要知道它的维数,所以有以下两种方式进行声明:
int func( int (*mp)[10] );
int func( int mat[ ][10] );
13:指针数组
int *api[10];
14:总结
a:当我们声明了一个数组时,它同时也分配了一些内存空间,用于容纳数组元素,而声明一个指针时,它只分配了用于容纳指针本省的空间。
0 0
- 数组读书笔记
- C++学习读书笔记-数组
- 读书笔记——数组
- 【读书笔记】数组与指针
- 【Perl读书笔记】基本数组,初始化
- 【读书笔记】数组的定义、初始化
- 【读书笔记】javascript之数组操作
- PHP经典实例读书笔记 (数组)
- Thinking in Java读书笔记――数组
- 第十四章 数组[《.net框架程序设计》读书笔记]
- C++ Primer 读书笔记 数组和指针
- C和指针读书笔记——数组
- 【Perl读书笔记】数组操作splice函数
- 【Perl读书笔记】数组排序函数sort
- C#读书笔记(4)—重学数组
- 后缀数组2倍增算法读书笔记
- C++ PRIMER读书笔记 之 数组与指针
- 《C++primer》读书笔记---数组和指针
- java后台框架源码 springmvc mybatis oracle mysql maven
- 如何快速将AAX转换为MP3格式
- 『 Spark 』1. spark 简介
- JDK容器与并发—Queue—PriorityBlockingQueue
- Graphite系统监控
- 数组读书笔记
- 看英文书的感觉
- 你有没有想到,这样的观点挖掘引擎?
- 字符编码笔记:ASCII,Unicode和UTF
- 从一次谷歌面试趣事中想到问题的更好的解决办法
- Caffe 学习笔记之CIFFA-10
- Java动态代理
- 使用Eclipse来开发Android源码
- SSM框架 SSM项目源码 SSM源码