数组相关的指针
来源:互联网 发布:下载流星vpn软件 编辑:程序博客网 时间:2024/05/02 10:01
二维数组指针 分析 :
int (*p)[5] ; / *这里的 int (*p)[5] 是一个行级指针, 指向一行5个元素 , 但是P本身也是一个内存地址 , 只站用 int 型内存单元 */
/* p 是一个行级指针 , p++ 指的是下一行 , *p是元素级别指针 , (*p)++ 指的是下一个元素 , 但是*p也是一个指针 , *((*p)++) 才是下一个元素的值 */
/* p 和 *p 在C中有可能值是相同的( 都是第一个元素的地址 ) , 但是 是完全不同的两个方面 */
1. (*p)[4] 和 *p[4] 的区别 :
(*p)[4]是定义一个指向一维数组的行级指针 , 这个一维数组有4个元素 , 而 *p[4] 是定义了一个包含4个指针元素的指针数组 . 用sizeof()计算两个p , 发现第一个 p 的大小是 4,
即 它是一个指针 , 第二个p的大小是16 , 因为它是一个包含 4 个指针的数组 . ( 本质上 : 第一个 p 是指针 , 第二个 p 是数组 )
2.
Array[0] 0 123Array[1] 4 567Array[2] 8 91011上图表示了二维数组的存储方法 , Array[0] ~ Array[2] 表示各一维数组的首地址 , 二维数组名 Array 表示整个二维数组的首地址 , 它和 Array[0] , Array[0][0] 是同一个地址 .
但是它们表示的级别是不同的 , 因此不能混用 . ( 特别是 p++ 操作 )
另外 : Array[1] 与 &Array[1] 输出的内容是相同的 , 都是第一行的首地址 , 但是它们的含义是不同的 , Array[1] 是元素级别的 , 是 int * , 而 &Array[1]是行级别的 (C 中可能没有这么使用 ) , 是 int (*p)[4]
也就是 , Array[1] + 1 , 指针移动到下个元素位置 , &Array[1] + 1 , 指针移动到下一行的位置 .
理解 : 首先二维数组可以当作一维数组 , 而每一维又是包含4个元素的数组 , 而 &Array[1] , 操作符是取地址的意思 , 而 Array[1] 本就是地址 , 所以...&Array[1]是行级指针.
- 数组相关的指针
- 指针、数组的相关操作
- 数组指针与指针数组 及相关的内存偏移
- 指针与数组相关问题的理解
- C数组和指针相关的问题
- 存放字符串的指针数组相关应用
- C++二维指针和指针数组的相关介绍
- 数组和指针相关
- 指针的指针 数组指针 指针数组
- 二维指针,二维数组,以及指向数组的指针的相关问题
- 二维指针,二维数组,以及指向数组的指针的相关问题
- 二维数组相关,指针,地址
- 二维数组指针相关理解
- 指针和数组相关运算
- 动态分配二维数组以及指针的相关精华
- 关于二维数组和二维指针的相关问题
- 动态分配二维数组以及指针的相关精华
- 【算法总结--数组相关】双指针法的常见应用。
- Android的进程回收
- 无法获得排它锁
- Vim 复制粘贴
- 六世达赖--不负如来不负卿
- 外星人冯诺依曼【转】
- 数组相关的指针
- 多点触控协议(MTP)
- vi下删除swp文件
- 设置特殊权限位
- xpath
- HashSet 总结
- The interpretation of Embedded Database(嵌入式数据库的介绍)
- Android 手机定位慢的解决方法
- 系统管理