C语言数组篇(二)指针数组和数组指针
2024-08-28 17:28:58
数组指针 和 指针数组
这两个名词可以说是经常搞混了
数组指针--> 数组的指针 就是前面讲的 指向数组a的指针p;
指针数组-->存满指针的数组 就是一个数组里面存的都是指针.----> 也是所谓的二级指针
数组指针就不讲了,见一维数组和指针.
那么指针数组呢?
首先,指针数组是 一个数组里面都是指针
第一步,我们需要一个数组
point[10] //我们定义了一个空间为10的数组
第二步,这个数组是什么类型的? 指针类型的
* point[10] //区别: int a[10] 中 数据元素是int型的,那我们现在需要指针型的,就把int换成 * .
还没完,第三步,数组里面的每个元素都是指针,但是指针就必须指向拎一个内存空间,那么这个空间有多大?
int *point[10] //表示有一个数组p,里面存放的都是指针类型的变量,然后这些指针都指向int大小的空间.
int *p[10] 就是指针数组.
从这里我们也发现,他的优先级是 以point为中心,从右往左 先p[] --> *p[] --> int *p[]
指针数组就是二级指针.
因为指针数组不单单又有它自己本身,还附带每个指针袁术指向的小空间.那么:
数组的地址是p,从数组数组的第一个元素是*p,第二个元素是*(p+1),第三个是...
那么,第一个元素指针所指向的小空间的内容就是 *(*(p)) 简写成 **p;
所以,对于二级指针**p 来说 p 是数组地址, *p 是数组里面的元素, **p 是数组里面指针指向的数据 .
从另一个角度理解 *p[10] 因为 p[10] 的指针形式是 *p 所以--> *(*p) 也符合定义
//指针数组的形参 -->二级指针 int func(int **p){
//...
return ;
}
int main(){
//数组指针
int *p[]; //数组指针
func(p); //指针数组的实参 }
最新文章
- app xml报错
- IIS服务器允许跨域配置
- Python 第五天 递归,计算器(2)
- bigworld源码分析(2)—— loginApp分析
- C#通过WinAPI获取内存信息,32位64位可用
- 初始——第一款个人开发上线app store
- [跟我学spring学习笔记][IoC]
- css 中的若干心得
- C# Best Practices - Specify Clear Method Parameters
- 杭电oj An easy problem
- CSS sprites减少HTTP请求
- 指定路径下建立Access数据库并插入数据
- PHP分页初探 一个最简单的PHP分页代码的简单实现
- 浅谈Unicode编码
- 如何快速定位到DBGrid的某一行!!!急...
- log4net在release模式下无法生成文件或不写入日志
- Oracle PLSQL读取(解析)Excel文档
- HighCharts实现多数据折线图分列显示
- JavaScript中的数组与伪数组的区别
- 创建Hive/hbase相关联的表异常