2.2.2 指向一个由n个元素所组成的数组指针
在Turbo C中, 可定义如下的指针变量:
int (*p)[3];
指针p为指向一个由3个元素所组成的整型数组指针。在定义中,圆括号是不能少的,否则它是指针数组,这将在后面介绍。这种数组的指针不同于前面介绍的整型指针,当整型指针指向一个整型数组的元素时,进行指针(地址)加1运算,表示指向数组的下一个元素, 此时地址值增加了2(因为放大因子为2),而如上所定义的指向一个由3个元素组成的数组指针,进行地址加1运算时,其地址值增加
了6(放大因子为2x3=6),这种数组指针在Turbo C中用得较少,但在处理二维数组时,还是很方便的。例如:
int a[3][4], (*p)[4];
p=a;
开始时p指向二维数组第0行,当进行p+1运算时,根据地址运算规则,此时放大因子为4x2=8,所以此时正好指向二维数组的第1行。和二维数组元素地址计算的规则一样,*p+1指向a[0][1],*(p+i)+j则指向数组元素a[i][j]。
例1
int a[3] [4]={
{1,3,5,7},
{9,11,13,15},
{17,19,21,23}
};
main()
{
int i,(*b)[4];
b=a+1; /* b指向二维数组的第1行, 此时*b[0]或
**b是a[1][0] */
for(i=1;i<=4;b=b[0]+2,i++)/* 修改b的指向, 每次增加2 */
printf("%d\t",*b[0]);
printf("\n");
for (i=0; i<2; i++) {
b=a+i; /* 修改b的指向, 每次跳过二维数组的
一行 */
printf("%d\t",*(b[i]+1));
}
printf ("\n");
}
程序运行结果如下:
9 13 17 21
3 11 19
C语言基础教程(四)指针、结构、联合和枚举(6)
时间: 2024-11-05 19:25:56
C语言基础教程(四)指针、结构、联合和枚举(6)的相关文章
C++基础教程(四)——指针(3)
//===================================================== // Name : Pointer1.cpp // Author : lf // Version : <C++语言基础教程> 吕凤翥 P41--P45 2.5.2 // Description : 指针数组和指向数组的指针以及字符指针 //===================================================== #include <iostre
C++基础教程(六)——指针(1)
//===================================================== // Name : Pointer1.cpp // Author : lf // Version : <C++语言基础教程> 吕凤翥 P35--P37 2.5.1 // Description : 指针 // Tips : // int *P ---------> p是一个指向int型变量的指针 // char *c---------> c是一个指向char型变量的指针
C++基础教程(五)——指针(2)
//===================================================== // Name : Pointer1.cpp // Author : lf // Version : <C++语言基础教程> 吕凤翥 P38--P43 2.5.2 // Description : 指针和数组 // Tips : // 在C++中,数组的元素可以用下标表示,也可以用指针表示. // 但是最好是用指针表示,因为指针表示要比下标表示处理起来要快. // 所以在C++中尽量
C 语言基础教程(我的C之旅开始了)[八]_C 语言
19. 基本数据类型:复数类型和虚数类型 C99 新增了复数类型(_Complex)和虚数类型(_Imaginary).简单来说,C99 提供了三种复数类型:float _Complex,double _Complex,和 long double _Complex.对于 float _Complex 类型的变量来说,它包含两个 float 类型的值,一个用于表示复数的实部(real part),另一个用于表示虚部(imaginary part).类似地,double _Complex 包含两个
易语言基础教程之制作简易浏览器_易语言
方法/步骤 首先打开易语言: 点击--工具--支持库配置--全选--确认 之后点击属性--拉宽 之后点击标题输入测试浏览器 拉一个编辑框和按钮最后一个超文本浏览框(自己找) 之后双击按钮输入代码: .版本 2 .支持库 HtmlView .子程序 _按钮1_被单击 超文本浏览框1.地址 = 编辑框1.内容 按F5测试,好的行了 注意事项 编辑框要输入网址,不能输入其他的OK. 以上是小编为您精心准备的的内容,在的博客.问答.公众号.人物.课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜
C语言基础教程(四)指针、结构、联合和枚举(1)
本节专门对第二节曾讲述过的指针作一详述.并介绍Turbo C新的数据类型:结构.联合和枚举,其中结构和联合是以前讲过的五种基本数据类型(整型.浮点型.字符型.指针型和无值型)的组合.枚举是一个被命名为整型常数的集合.最后对类型说明(typedef)和预处理指令作一阐述. 1. 指针(point) 学习Turbo C语言,如果你不能用指针编写有效.正确和灵活的程序,可以认为你没有学好C语言.指针.地址.数组及其相互关系是C语言中最有特色的部分.规范地使用指针, 可以使程序达到简单明了,因此,我们不
C语言基础教程(四)指针、结构、联合和枚举(18)
类型说明类型说明的格式为:typedef 类型 定义名; 类型说明只定义了一个数据类型的新名字而不是定义一种新的数据类型.这里类型是Turbo C许可的任何一种数据类型.定义名表示这个类型的新名字. 例如: 用下面语句定义整型数的新名字: typedef int SIGNED_INT; 使用说明后,SIGNED_INT就成为int的同义词了,此时可以用SIGNED_INT定义整型变量.例如:SIGNED_INT i, j;(与int i, j等效). 但long SIGNED_INT i, j;
C语言基础教程(四)指针、结构、联合和枚举(12)
二.结构指针结构指针是指向结构的指针.它由一个加在结构变量名前的"*" 操作符来定义,例如用前面已说明的结构定义一个结构指针如下: struct string{ char name[8]; char sex[2]; int age; char addr[40]; }*student; 也可省略结构指针名只作结构说明,然后再用下面的语句定义结构指针. struct string *student; 使用结构指针对结构成员的访问,与结构变量对结构成员的访问在表达方式上有所不同.结构指针对结
C语言基础教程(四)指针、结构、联合和枚举(11)
3.结构数组和结构指针结构是一种新的数据类型,同样可以有结构数组和结构指针.一.结构数组结构数组就是具有相同结构类型的变量集合.假如要定义一个班级40个同学的姓名.性别.年龄和住址,可以定义成一个结构数组.如下所示:struct{ char name[8]; char sex[2]; int age; char addr[40]; }student[40]; 也可定义为: struct string{ char name[8]; char sex[2]; int age; char addr[4
易语言基础教程之循环程序结构_易语言
曾经听说过一句话:"计算机就擅长做的工作就是'循环'!".的确循环执行在语言中扮演着极为重要的角色,利用循环我们可以实现更复杂.重复性的工作.易语言对于循环程序结构提供四种形式,下面就一起来了解一下易语言中循环结构的具体使用方法. 方法/步骤 在此小编将以实例的方法与大家分享易语言中循环结构的具体使用方法:先创建一个Windows空白窗口,绘制如图所示的人机界面. 接下来为"计算"按钮添加"被单击"事件. 我们先利用"判断循环"