数组指针及指针数组的区别
2016-04-13 17:17
309 查看
/* 指针数组:array of pointers,即用于存储指针的数组, 也就是数组元素都是指针 例:int* a[4] 指针数组 表示:数组a中的元素都为int型指针 元素表示:*a[i] *(a[i])是一样的,因为[]优先级高于* 数组指针:a pointer to an array,即指向数组的指针 <span style="white-space:pre"> </span>例:int (*a)[4] 数组指针 表示:指向数组a的指针 元素表示:(*a)[i] */
#include<stdlib.h> #include<stdio.h> int main() { int a[10] = {1,2,3,4,5,6,7,8,9,10}; int b[3][4] = {1,2,3,4,5,6,7,8,9,10,11,12}; printf("%p,%p\n",a,&a); printf("%d,%d\n",sizeof(*a),sizeof(*(&a)));/* 4 40 */ /*a 与 &a 的地址一样,但是 a 的步长是4 &a 的步长是40 所以 a 代表指向一个元素,&a 代表是指向一个数组 */ printf("%p,%p,%p\n",b,&b,*b); printf("%d,%d,%d\n",sizeof(*b),sizeof(*(&b)),sizeof(**b)); /* 16 48 4*/ /* 从上面的结果可以看出 b 是行指针,步长是一行的大小, &b 是数组指针 ,步长是整个数组, *b 指向列,一列一个元素 */ int c[10]; int (*pc)[10]; //pc = c; /* 错,类型不匹配 ,pc 是数组指针,c 是元素指针*/ pc = &c; /* &c 是数组指针 */ int *px = c; /* 正确 px 是int类型的指针 与 c 类型一样所以正确 */ system("pause"); }
相关文章推荐
- Postgresql 9.5.0源码安装
- 嵌入式应用对实时Linux系统剪裁和开发的思路
- Handler使用情形
- Android mediaPlayer属性详解
- php变量的几种写法
- 进度报告
- JDBC使用简介
- 两个队列实现一个栈
- Spring 事物管理概述
- XSD-JAVA
- hive安装与mysql对接
- 26个ASP.NET常用性能优化方法
- c++第3次上机实验-1
- **对比$_POST、$GLOBALS['HTTP_RAW_POST_DATA']和file_get_contents('php://input')
- 设置SSH自动登陆(免密码,用户名)
- 第四章进程调度读书笔记
- Kafka设计解析(五): Kafka Consumer设计解析
- 如何将pdf转换成jpg图片的格式
- Android 5.0以后版本打开“有权查看使用情况的应用”
- leetcode-14-Longest Common Prefix