内容正文:
第8章指针
8.1指针的基本概念
8.2指针变量的定义、初始化、引用
8.3指针运算
8.4指针与数组
8.6指针与函数
8.5指针与字符串
8.7指针数组
大学C/C++语言程序设计程序设计 第8章 指针
1-12章幻灯片45分钟 13-27章45分钟
2、行指针(数组指针)引用二维数组
数组指针:指向一维数组(既存放二维数组行地址)的指针变量。
一般格式为:
类型标识符 (*指针变量名)[常量表达式n]
行指针存放含n个元素的数组行地址;
所以数组元素a[i][j]又可写成:
*(*(p + i) + j) 、*(p[i] + j)、p[i][j]。
例如: int a[3][4] , (*p)[4] ;
则可赋值:
p=a; //p存放第0行的行地址;
p=a+2; //p存放第2行的行地址;
小结:行指针与二维数组名等价使用;
大学C/C++语言程序设计程序设计 第8章 指针
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int (*q)[4];
判断对错:
q=&a[2];
q=a+1;
q=*(a+1);
大学C/C++语言程序设计程序设计 第8章 指针
例:输出二维数组中最大元素值及其行列号
#include<stdio.h>
main()
{ int i,j,m,n,max;
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
max=**a; //max=a[0][0];
m=0;n=0;
for(i=0;i<3;i++)
{ for(j=0;j<4;j++)
}
printf("
max is:a[%d][%d]=%d
",m,n,max);
}
大学C/C++语言程序设计程序设计 第8章 指针
例:输出二维数组中最大元素值及其行列号
#include<stdio.h>
main()
{ int i,j,m,n,max;
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
max=**a; //max=a[0][0];
m=0;n=0;
for(i=0;i<3;i++)
{ for(j=0;j<4;j++)
{ printf("%5d",*(*(a+i)+j));
if(max<*(*(a+i)+j))
{ max=*(*(a+i)+j);
m=i;n=j;
}
}
}
printf("
max is:a[%d][%d]=%d
",m,n,max);
}
大学C/C++语言程序设计程序设计 第8章 指针
例:利用行指针输出二维数组中最大元素值及其行列号
#include<stdio.h>
main()
{ int i,j,m,n,max;
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12},(*p)[4];
p=a;
max=**p; //max=a[0][0];
m=0;n=0;
for(i=0;i<3;i++)
{ for(j=0;j<4;j++)
{ printf("%5d",*(*(p+i)+j));
if(max<*(*(p+i)+j))
{ max=*(*(p+i)+j);
m=i;n=j;
}