一、小结
1.一维数组:(eg:int a[5],*p;)
a+nIIp+n---->表示数组元素a[n]的地址;
(a+n)II(p+n)---->表示数组中第n个元素;
2.二维数组(int a[3][5],p;)
&a[i][j]=(a+i)+j; //表示第i行第j列元素的地址;
a[i][j]=((a+i)+j)=*(a[i]+j) //示第i行第j列元素;
//输出二维数组中的指定行数
#include<stdio.h>
int main(){
int a[3][5],i,j;
int (*p)[5]; //定义长度为5的指针型数组
p=&a[0]; //取第0行的首地址
printf("please input:\n");
for(i=0;i<3;i++){
for(j=0;j<5;j++){
scanf("%d",(*(p+i))+j);
}
}
p=&a[2];
printf("the trird line:\n");
for(j=0;j<5;j++){
printf("%5d",*((*p)+j));
}
printf("\n");
}码片
Plus (`・ω・´) 补充案例
二、二维数组元素的引用
1.((a+i)+j)-------->表示第i行,第j列的元素。
2.*(a[i]+j) --------->表示第i行,第j列的元素。
#include<stdio.h>
int main(){
int a[3][5],i,j;
printf("please input:\n");
for(i=0;i<3;i++){
for(j=0;j<5;j++){
//对i行j列的元素赋值
//scanf("%d",*(a+i)+j);
scanf("%d",a[i]+j);
}
}
printf("The second line is:\n");
for(j=0;j<5;j++){
printf("%5d",*(*(a+1)+j)); //输出第二行中的元素
//printf("%5d",*(a[1]+j));
}
printf("\n");
}
三、字符串与指针
==访问字符串 ==
1.用字符数组存放并进行操作;
2.使用字符指针指向字符串;
#include<stdio.h>
main(){
int i;
char *month[]={
"January",
"February",
"March",
"April",
"May",
"June",
"July",
"August",
"September",
"October",
"November",
"December"
};
for(i=0;i<12;i++){
printf("%s\n",month[i]);
}
}