C语言--行指针与列指针
来源:互联网 发布:胡歌经纪人是谁知乎 编辑:程序博客网 时间:2024/04/29 04:35
行指针和列指针是我们在学习指针处理二维数组时遇到的知识难点。在这里我结合资料为大家做一些分析。
首先数组的访问有三种形式:1)下标法;2)首地址法;3)指针变量法。这里我们先分析首地址法。
假设有一个二维数组a[3][4],a就是首地址,他是一个指针是一个常量,指向第一个元素的地址,也就是指向第一行的首地址,是指首行一整行,并不是指某个具体元素。那么我们称之为“行指针”。同理:a+0,a+1,a+2,都是行指针如下表所示。
结论:
表示形式
含义
指针类型
a或者a+0
指向第0行
行指针
a+1
指向第1行
行指针
a+2
指向第2行
行指针
但我们发现光有行指针是不能对列元素进行访问的。所以我们再来看a[0],他也就是这个数组的首地址,也就是第一个元素的地址,只不过指针方向是指向列的方向。也就是a[0]+0。a[0]和a[0]+0都是指具体的元素,那么我们称之为“列指针”,如下表所示。
结论:(第0行视为一维数组)
表示形式
含义
指针类型
a[0]
是一维数组的名称,也是它的首地址,而且是第1个元素的地址(a[0]+0)
列指针
a[0]+1
第0行,第2个元素的地址
列指针
a[0]+2
第0行,第3个元素的地址
列指针
那么两个概念之间的具体转换是:
*行指针----列指针
&列指针----行指针
对应关系如下表所示
根据以上转换公式:
行指针
转换成:列指针
列指针等价表示
内容
内容等价表示
含义
a或a+0
*a
a[0]
*a[0]
*(*a)
a[0][0]
a+1
*(a+1)
a[1]
*a[1]
*(*(a+1))
a[1][0]
a+2
*(a+2)
a[2]
*a[2]
*(*(a+2))
a[2][0]
对于元素a[1][2],其地址用列指针表示为a[1]+2,等价表示为*(a+1)+2,那么内容是*(*(a+1)+2);
列指针
行指针
等价表示
含义
a[0]
&a[0]
&a或&(a+0)
第0行
a[1]
&a[1]
&(a+1)
第1行
a[2]
&a[2]
&(a+2)
第2行
示例1:用列指针输出二维数组。
#include
void main()
{
}
示例2:用行指针输出整个二维数组。
#include
void main()
{
}
- C语言--行指针与列指针
- C语言:行指针和列指针
- 行指针与列指针
- 行指针与列指针
- c语言与指针
- C语言二维数组与指针数组以及行指针
- C语言:指针数组与数组指针
- C语言指针数组与数组指针
- C语言指针-----指针与变量
- C语言指针-----指针与数组
- C语言指针-----指针与函数
- C语言指针-----指针与结构体
- C语言指针-----指针与字符串
- C语言指针-----指针与文件
- C语言函数指针与指针函数
- C语言,函数指针与指针函数
- C语言指针越界与野指针
- C语言指针详解-----数组与指针
- centos6.6下安装MySQLdb时出现“error: command 'gcc' failed with exit status 1”
- hdu 2444 The Accomodation of Students (二分图匹配+染色法)
- 利用.dSYM和.app文件准确定位Crash位置
- 黑马程序员------C语言-----流程控制(选择结构:if,switch)
- python lib install
- C语言--行指针与列指针
- ACM——01——1008: 【入门】将小写字母转换为大写字母 【运算符】
- 16进制颜色对照表
- python *args **kwargs
- c语言二维数组与指针(课时4)
- hibernate学习:一对一单向外键映射
- 定时器setTimeout的应用---延时提示框
- Oracle使用游标为所有用户表添加主键语句
- HDU 1505 City Game (最大子矩形面积)