指针和数组的关系
1.一维数组
Int a[5]={1.2.3.4.5};
1)( P=&a[0]和p=a等价)
在C语言中数组名就是该数组的首地址
2)printf("%d",a[1]);
printf("%d",*(a+1)); 当我们以前使用a[1]的时候,
事实上计算机内部自动将其转换为*(a+1)
3) int a=[5];
int i,*p=a;
for(i=0;i<5;i++,p++){
scanf("%d",p);
}
for(i=0;i<5;i++,p++){
Printf("%d",*p);
注释里的内容不能够删除否则指针变量p就会指超出到a数组
4)上面程序p++不能换成a++
(因为p是指针变量。本身的值是可以变化的,
a虽然也是地址。But他是一个常量不能对一个常量自减或者自加)
2.二维数组
在二维数组中第一个下标代表行地址
第二个下标代表列地址
Eg: int a[2][3]={1,2,3,4,5,6};
a[0]代表第一行的首地址
a[1]代表第二行的首地址
printf("%d",*(a[0]+2));
元素 |
行地址 |
列地址 |
a[1][2] |
a[1] |
a[1]+2 |
*(a[1]+2) |
*(a+1) |
*(*(a+1)+2) |
*(*(a+1)+2) |
3.字符串指针
C语言中,有2种方式可以访问字符串1)通过字符数组访问2)指针访问
4.指针数组
1)什么是指针数组:一个数组中所有的数据类型都是指针类型那么这就是指针数组
2)指针数组最大的好处是用来处理多字符串
因为我们的字符串本身就是用字符数组来储存的,如果涉及到多条字符串,就必须
用到二维字符数组。
定义一个指针数组
Char *p[]//这里我们定义一个指针数组;
Eg:char *p[3]={
"movie"
"movie1"
"movie2"}
m |
o |
v |
i |
e |