时间:2012-07-26 22:52:02
第一章 数组
(一) 关键词
1. 数组
同类型变量的集合
2. 定义数组
Int a[5];
在定义时必须指明数组元素个数
3. 数组下标从0开始
例:a[0] a[1] a[2] a[3] a[4]
4. 数组赋初值
例:int b[8]={1,2,3,4,5,6,7,8};
5. 数组名代表一个地址
Int a[8],*p;
P=a;
此时a[i]有这样几种表示方式:a[i] *(a+i) *(p+i) p[i] *&a[i]
此时&a[i]有这样几种表示方式:&a[i] a+I p+i
6. 数组元素做实参与同类型普通变量做实参一样
7.数组名做实参时对应形参必须是基类型相同的指针变量
8.数组元素地址做实参与同类型普通变量地址做实参一样
9.数组名不可做为函数返回值
10.二维数组
(1)定义二维数组: int a[3][4];
a 的数组元素类型为一维数组
(2)行的循环在外层是按行
例:for( i=0:,i<3;i++)
For(j=0;j<4;j++)
Printf(“%d”,a[i][j]);
列的循环在外层是按列
例:for(j=0;j<4;j++)
For(i=0;i<3;i++)
Printf(“%d”,a[i][j]);
11.int *p,a[3][4];
P=a[i]; 或p=*(a+i);
12.二维数组a[i][j]的地址的表示方式:
&a[i][j] a[i]+j *(a+i)+j a[0]+4*i+j &a[0][0]+4*i+j (考虑是否可写作a+4*i+j)
13.二维数组元素a[i][j]的表示方式
a[i][j] *&a[i][j] (*(a+i))[j] *(a[i]+j) *(*(a+i)+j) *(a[0]+4*i+j) *(&a[0][0]+4*i+j)
14.指针数组
Int *p[3],a[3][4],i;
For(i=0;i<3;i++)
P[i]=a[i];(考虑可否写作*(p+i)=a+i)
执行以上赋值后,a[i][j]可写作:
*(*(p+i)+j) *(p[i]+j) *(p+i)[j] p[i][j] *(p[0]+4*i+j) *(&p[0][0]+4*i+j)
在如此定义:int *p[3],a[3][4]后考虑以下几个赋值表达式的正确性:
P=a p=a[i] p+i=a+I *(p+i)=a[i] p=a+i
15 基类型为一维数组的指针变量(行指针)
Int (*p)[4],a[3][4];
P=a;
元素a[i][j]有以下表示方式:
P[i][j] *(*(p+i)+j) *(p[i]+j) *(p+i)[j] *(p[0]+4*i+j) *(&p[0][0]+4*i+j)
16 二维数组名做函数实参时,对应形参必须是基类型相同的行指针
17 指针数组做实参时,对应形参必须是指针的指针
题目:存放在a数组中的数不相重,在a数线中查找和x值相同的元素的位置,若找到,输出该值和该值在a数组中的位置,若没找到输出相应的信息。
Main()