c语言教程-第14章
按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
可以看成是a'0'+0是一维数组a'0'的0号元素的首地址, 而a'0'+1则是a'0'的1号元素首地址,由此可得出a'i'+j则是一维数组a'i'的j号元素首地址,它等于&a'i''j'。由a'i'=*(a+i)得a'i'+j=*(a+i)+j,由于*(a+i)+j是二维数组a的i行j列元素的首地址。该元素的值等于*(*(a+i)+j)。
'Explain'#define PF 〃%d;%d;%d;%d;%d;n〃
main(){
static int a'3''4'={0;1;2;3;4;5;6;7;8;9;10;11};
printf(PF;a;*a;a'0';&a'0';&a'0''0');
printf(PF;a+1;*(a+1);a'1';&a'1';&a'1''0');
printf(PF;a+2;*(a+2);a'2';&a'2';&a'2''0');
printf(〃%d;%dn〃;a'1'+1;*(a+1)+1);
printf(〃%d;%dn〃;*(a'1'+1);*(*(a+1)+1));
}
二、多维数组的指针变量
把二维数组a 分解为一维数组a'0';a'1';a'2'之后,设p为指向二维数组的指针变量。可定义为: int (*p)'4' 它表示p是一个指针变量,它指向二维数组a 或指向第一个一维数组a'0',其值等于a;a'0',或&a'0''0'等。而p+i则指向一维数组a'i'。从前面的分析可得出*(p+i)+j是二维数组i行j 列的元素的地址,而*(*(p+i)+j)则是i行j列元素的值。
二维数组指针变量说明的一般形式为: 类型说明符 (*指针变量名)'长度' 其中“类型说明符”为所指数组的数据类型。“*”表示其后的变量是指针类型。 “长度”表示二维数组分解为多个一维数组时, 一维数组的长度,也就是二维数组的列数。应注意“(*指针变量名)”两边的括号不可少,如缺少括号则表示是指针数组(本章后面介绍),意义就完全不同了。
'Explain'main(){
static int a'3''4'={0;1;2;3;4;5;6;7;8;9;10;11};
int(*p)'4';
int i;j;
p=a;
for(i=0;i