数组和指针
来源:互联网 发布:这么私密在淘宝买东西 编辑:程序博客网 时间:2024/06/07 15:14
记录整理一些在阅读《征服C指针》过程中的感想。
1 关于数组和数组指针
char array1[2]; //定义一个数组,包含了2个char元素
char (*array2)[2]; //定义一个数组指针,这个指针指向的数组是一个包含了2个元素的数组
另外:
(1)数组名称array其实代表了数组首元素的地址,即&array[0],而&array代表的其实是整体数组地址。所以,array+1和&array+1所移动的距离是不一样的,前者是一个字节,后者是2个字节。
(2)看看这样的代码:
char array1[2];
char (*array2)[2];
array2 = array1; //错误,cannot convert from 'char [2]' to 'char (*)[2]'
ayyay2 = &array; //正确,为什么?&array代表了一个包含2个元素的数组,而array代表的是&array[0]。
array2 = new char[2]; //错误,cannot convert from 'char *' to 'char (*)[2]'。new返回的只是一个指针,而指针并不会包含区域大小信心,所以把它赋值给array2就会造成类型不匹配。
(3)array[i]其实是*(array+i)的语法糖。实际上[]和数组之间并不存在任何关系。
2 关于这样一个数组的一个声明:
char (*array[5])[2];
其实是定义了一个数组指针,这个指针指向一个数组,这个数组包含了5个元素,每个元素又是另一个2维数组。是不是很绕口?如果这样写就很明白了:
typedef char POINT[2]; //定义一个包含2个元素的数组的别名
POINT (*array)[5];//定义一个数组,包含了5个元素,每个元素的类型是什么?是POINT,POINT是什么?上面已经定义了!
- 指针和指针数组
- 指针数组和数组指针
- 指针数组和数组指针
- 指针数组和数组指针
- 指针数组和数组指针
- 数组指针和指针数组
- 指针数组和数组指针
- 数组指针和指针数组
- 指针数组和数组指针
- 指针数组和数组指针
- 数组指针和指针数组
- 指针数组和数组指针
- 指针数组和数组指针
- 数组指针和指针数组
- 数组指针和指针数组
- 指针数组和数组指针
- 指针数组和数组指针
- 数组指针和指针数组
- Dao设计模式
- ffmpeg工作流程框架
- vi编辑器命令应用
- VS2012下基于Glut OpenGL GL_TRIANGLES示例程序:
- REST Client学习笔记
- 数组和指针
- 吐槽
- 红黑树 删除 背后的思想(转自博客园)
- golang实现Fibonacii的几种算法
- 第 2 章 Hibernate入门
- Android中的Handler详解以及和Thread的区别
- Java内部类与final关键字详解
- 哥德巴赫猜想 java 实现
- 利用iOS API编写简单微博客户端全过程