一表制、一維數(shù)組與指針
(1).?dāng)?shù)組指針
在C語言中,數(shù)組的首地址稱為數(shù)組指針控乾。而C++規(guī)定么介,數(shù)組的首地址可用數(shù)組名a表示,因此蜕衡,數(shù)組a的數(shù)組指針=a=&a[0]壤短。
給個例子:
int (*pName)[N]; 對一維數(shù)組取地址,等價于數(shù)組指針而不是二級指針慨仿。
int arrray[10];
int(*pa)[10] = &array; 【正確】
int **pa = &array; 【錯誤】
(2).?dāng)?shù)組指針變量
【定義】存放數(shù)組元素地址的變量稱為數(shù)組指針變量久脯。
int a[5]; int *p=&a[0]; //p為數(shù)組指針變量。
eg:用指針變量訪問數(shù)組元素镰吆。
#include <stdio.h>
void main( void)
{
int a[5]={0,1,2,3,4},i,j,*p,n=5;
p=a;
for (i = 0;i < n;i++)
{
printf("*p\t\n";*p);
//通過移動指針變量桶现,依次訪問數(shù)組元素。
p++;
}
p = a;
for(i = 0;i < n;i++ )
{
printf("*(p + i)\t\n";*(p+i));
//指針變量不變鼎姊,用p+i 訪問數(shù)組第i個元素。
}
for(i = 0;i < n;i++)
{
printf("*(a + i)\t\n";*(a + i));
//指針變量不變相赁,用 a+i 訪問數(shù)組第i個元素相寇。
}
for (i = 0;i < n;i++)
{
printf("p[i]\t\n";p[i]);
//以指針變量名作為數(shù)組名訪問數(shù)組元素。
}
}
輸出:
0 1 2 3 4
0 1 2 3 4
0 1 2 3 4
0 1 2 3 4
(3).?dāng)?shù)組元素的引用
在一維數(shù)組a[ ]而言钮科,當(dāng)p=a后唤衫,有如下等同關(guān)系成立:
① p+i=a+i=&a[i],即p+i绵脯、a+i 均表示第i個元素的地址&a[i]佳励。
② *(p+i) =*(a+i)=p[i]= a[i]休里。即*(p+i), *(a+i), p[i]
均表示第i個元素值a[i]。//p[i] 的運行效率最高赃承。
總結(jié):一維數(shù)組的第i個元素可用四種方式引用妙黍,即:
a[i]、*(p+i) 瞧剖、*(a+i)拭嫁、p[i]。