行指针和列指针详解
来源:互联网 发布:表单提交json数据 编辑:程序博客网 时间:2024/06/10 09:35
主要指二维数组
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
换个角度看世界:
如首行一样,将首行视为一个元素,一个特殊的元素,这个“特殊的”元素是一个一维数组。那么这个二维数组是由是由三个“特殊的”元素组成的一个“特殊的”一维数组。
a是这个“特殊的”一维数组的名称,也就是首地址,也就是第一个元素的地址,也就是第一行的首地址,是指首行一整行,并不是指某个具体元素。那么我们称之为“行指针”。同理:a+0,a+1,a+2,都是行指针。
结论:
表示形式
含义
指针类型
a或者a+0
指向第0行
行指针
a+1
指向第1行
行指针
a+2
指向第2行
行指针
接下来,我们来放大观看首行,首行的元素分别是:a[0][0],a[0][1],a[0][2],a[0][3]。将其看作一个独立的一维数组,那么 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 <stdio.h>
void main()
{
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int *p= a[0]; // 列指针的定义法
for(; p < a[0] + 12; p++)
{
printf("%d ",*p);
}
return;
}
示例2:用行指针输出整个二维数组。
#include <stdio.h>
void main()
{
int a[3][4]={1,3,5,7,9,11,13,15,17,19,21,23};
int (*p)[4]= &a[0]; // 行指针定义法或者int (*p)[4]= a;
int i, j;
for(i = 0; i < 3; i++)
for(j = 0; j < 4; j++)
{
printf("%d ",*(*(p + i) + j));
}
return;
}
- 行指针和列指针详解
- C语言:行指针和列指针
- 行指针列指针
- 二维指针行指针和列指针的区别
- 行指针与列指针
- 行指针与列指针
- c和指针详解------指针
- 二维数组中的指针类型(行指针和列指针)
- C语言--行指针与列指针
- 行指针与列指针_1
- 行指针与列指针_2
- 指针与二维数组 行指针与列指针
- 彻底搞清C/C++中一维数组,二维数组,指针,数组指针和指针数组以及指向指针的指针,行地址和列地址之间的关系
- 彻底搞清C/C++中一维数组,二维数组,指针,数组指针和指针数组以及指向指针的指针,行地址和列地址之间的关系
- 指针数组和数组指针详解
- 数组指针和函数指针详解
- 数组指针和指针数组详解
- 数组指针和指针数组的详解
- 零售系统软件架构---设计之权限数据分发
- 数据挖掘:FP增长
- 2014百度之星初赛第二轮代码注释:Best_Financing
- javax.servlet.jsp.*和javax.servlet.http.*
- BZOJ 2127 happiness 最小割
- 行指针和列指针详解
- Linux bash 环境相关配置文件
- Java多线程-线程的交互
- 系统调用与设备驱动
- 使用MLP解决OCR问题(OpenCV)(下)
- Android launcher的文件夹
- Java泛型详解
- Android 生成缩略图的方法!!!
- linux zip