今天把指针和一维数组的知识,做一个简要的总结。
<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我们使用该种方式的时候,会发现复用性比较好,也建议使用此种方式。