今天把指针和一维数组的知识,做一个简要的总结。
<pre name="code" class="cpp"> int liv_arr[] = {11, 22, 33, 44, 55};
int * lpv_sum = liv_arr;
printf("liv_arr[2]=%d *(lpv_sum+2)=%d *(liv_arr+2)=%d\n", liv_arr[2], *(lpv_sum+2), *(liv_arr+2));
printf("liv_arr[2]=%x *(lpv_sum+2)=%x *(liv_arr+2)=%x\n", &liv_arr[2], lpv_sum+2, liv_arr+2);
输出的结果为
<span style="white-space:pre"> </span>liv_arr[2]=33 *(lpv_sum+2)=33 *(liv_arr+2)=33
<span style="white-space:pre"> </span>&liv_arr[2]=2dfa90 *(lpv_sum+2)=2dfa90 *(liv_arr+2)=2dfa90
那么说明他们的结果都是一样的,所以我们在操作的一维数组的时候,就有了三种方式进行操作。
比如我们现在想使用一个函数,将一维数组中的内容全部遍历输出,我们可以使用如下方式
方式一:使用数组方式:
<span style="white-space:pre"> </span><pre name="code" class="cpp"><pre name="code" class="cpp"><span style="white-space:pre"> </span>//使用数组方式进行打印一维数组中的元素
<pre name="code" class="cpp"> /*
int * pArr 为一维指针数组
<span style="font-family: Arial, Helvetica, sans-serif;"> */</span>
void printArr(int arr[5])
{
for (int i=0; i<5; i++)
{
printf("arr[%d] = %d \n", i, arr[i]); }
}
<span style="white-space:pre"> </span>//调用
<span style="white-space:pre"> int liv_arr[] = {11, 22, 33, 44, 55};
<span style="white-space:pre"> </span>printArr(liv_arr);</span>
输出结果:
<span style="white-space:pre"> </span>arr[0] = 11
<span style="white-space:pre"> </span>arr[1] = 22
<span style="white-space:pre"> </span>arr[2] = 33
<span style="white-space:pre"> </span>arr[3] = 44
<span style="white-space:pre"> </span>arr[4] = 55
但是使用这种方式会发现代码的复用性比较差,因为参数必须是5个元素的int类型的数组
方式二:使用指针方式
<span style="white-space:pre"> </span>//使用指针方式进行打印一维数组中的元素<span style="white-space:pre"> </span>
/*
int * pArr 为一维指针数组
int count 为一维指针数组元素个数
*/
void printArr(int * pArr, int count)
<span style="white-space:pre"> </span>{
for(int i=0; i<count; i++)
{
printf("*(pArr+%d) = %d \n", i, *(pArr+i));
}
<span style="white-space:pre"> </span>}
<span style="white-space:pre"> </span>
//调用
int liv_arr[] = {11, 22, 33, 44, 55};
<span style="white-space:pre"> </span>printArr(liv_arr, 5);
输出结果:
<span style="white-space:pre"> </span>*(pArr+0) = 11
<span style="white-space:pre"> </span>*(pArr+1) = 22
<span style="white-space:pre"> </span>*(pArr+2) = 33
<span style="white-space:pre"> </span>*(pArr+3) = 44
<span style="white-space:pre"> </span>*(pArr+4) = 55
我们使用该种方式的时候,会发现复用性比较好,也建议使用此种方式。