C语言-指针和数组
Int ages[5]={10,9,8,7,6};
遍历数组
For(int i=0;i<5;i++)
Printf(“%d\n”,ages[i]);
使用指针遍历数组
Int *p;
P=ages;//也可以写成p=&ages[0];,指针变量p指向了数组的首元素
元素的地址:
第一个元素的地址p &ages[0]
第二个元素的地址p+1 &ages[1]
第三个元素的地址p+2 &ages[2]
元素的值
*p ages[0]
*(p+1) ages[1]
*(p+2) ages[2]
把指针当做数组来用:
For(int i=0;i<5;i++)
Printf(“%d\n”,*(p+i));
(1)数组元素的三种访问形式:
①. 数组名[下标]
②. 指针变量名[下标]
③. *(p+1)
(2)指针变量的+1究竟是加多少?这取决于指针的类型,如果是char类型则加1个字节,如果是int类型的,则加4个字节。
(3)利用指针来接收一个数组,指针变量指向了数组的首元素。
Void change(int array[])等价于void change(int *array)。
前者存储的虽然是数组元素的首地址,但是在传递时就已经变成指针了。
示例:
Void change(int *array)
{
//Printf(“%d\n”,array[2]);
Printf(“%d\n”,*(array+2));
}
Int main()
{
Int ages[5]={1,2,3,4,5};
Change(ages);
}
调用的结果为:数组的第三个元素3
若改给change(&ages[2]);则调用的结果为5,因为此时array指向的是ages[2],把ages[2]当做了array的首元素
浙公网安备 33010602011771号