C语言学习:数组方面应用
来源:互联网 发布:2004年流行的网络歌曲 编辑:程序博客网 时间:2024/05/16 01:40
前言
(1)
一个数组包含 若干元素,每个数组元素都在内存中占用存储单元,也都有响应的地址。
(2)
定义一个数组:int a[5];
在c语言中,数组名(不包括形参数组名,形参数组不占据实际的内存单元)代表:数组中首元素的地址
int * p;
p = &a[0];
所以:
p =a ;
把a数组的首元素的地址赋给指针变量p,而不是把数组a各元素的值赋给p。
(3)
可以写成:int * p =a;
就是把这个数组的首元素的地址交给了指针变量p。
并且使用指针可以使目标程序占内存少,运行速度快。
运算
在一定条件下允许对于指针进行加和减的运算。
这个条件就是当指针指向数组元素的时候。
(1) p+1 / p-1
指的是同一数组中的下一个元素/同一数组中的上一个元素。
执行p+1时并不是将p的值(地址)简单的加1,而是加上一个数组元素所占的字节数,
比如一个float 型,每个元素占4个字节,则p+1就是使p的值加上四个字节,以使它指向
下一个元素。
p+1 就是 : p + 1*d (d表示的是一个数组元素所占的字节数)
(2)p++ / p–
自身加减1
(3)
如果p的初值为&a[0] , 那么p+i 和 a +i 就是数组元素a[i] 的地址 ,就是指向数组中位置是i 的元素。
(4)
如果p 的初值为 &a[0] ,那么(p+i) 或 (a+i)就是p+i或a+i所指向的数组元素,
比如:* (p+5) 或 *(a + 5)就是a[5]的值。
原理上讲,对于a[i] 的处理,就是按照 * (a+i) 处理,因为,数组名 a 就是代表的是a[0] 的地址。
(5)
如果指针变量 p1 和 p2 都是指向同一数组,那么p2 - p1 ,得到的结果就是p2 - p1 的值(地址差),去
除以数组元素的长度。 那么这个结果的意义就是,p2 所致元素和 p1 所指元素之间相差了几个元素。
表示
如何表示数组中一个元素的值:
(1) 下标法
如a[i] 形式,可以理解为,就是数组a中存的值。
你直接打印a[i] 显示的是具体的值,实际上是先找i 的地址,再去取值。
(2) 指针法
如* (p+i) ,也是取数组中i位置上的值。
- C语言学习:数组方面应用
- C语言数组应用
- C语言数组学习
- C语言学习-数组
- C语言数组学习
- C语言_数组应用
- C语言数组应用举例
- C语言数组应用举例
- C语言数组的应用
- 【学习ios之路:C语言】循环方面试题
- 【学习ios之路:C语言】二维.三维数组.字符串数组的应用
- 【学习ios之路:C语言】② 二维.三维数组.字符串数组的应用
- C语言学习笔记<数组>
- C语言学习之数组
- C语言学习笔记:数组
- C语言学习------2.1数组
- C语言学习—数组
- C语言--数组深入学习
- poj-2299-Ultra-QuickSort-(树状数组and离散化)
- Lua 5.3 源码分析(五)字符串 TString
- Linux chmod命令 修改文件权限被禁止(not permitted)的解决办法
- #Ubuntu
- 插板法(排列组合)
- C语言学习:数组方面应用
- Android系统中settings数据库应用
- struts2--数据源应用
- HDU 2017 多校联合训练赛8 1011 6143 Killer Names 排列组合
- C++11 标准新特性: 右值引用与转移语义
- ListView增加Item动画例子
- Largest Palindrome Product问题及解法
- Sublime Text3配置Vue 语法
- 从超级菜鸟变成Linux系统高手