看了指针数组之后,就拿着下列程序练练手吧
#include <stdio.h>
#include <iostream>
#include <string.h>
using namespace std;
int main()
{
int a[]={1,2,3,4,5};
int b[]={6,7,8,9,10};
int *p[2]={a,b};
int i,j;
printf("%d \n",p);
printf("%d \n",*p);
printf("%d \n",**p);
printf("sizeof(a):%d \n",sizeof(a));
for(j=0;j<sizeof(p)/sizeof(int);j++){
for(i=0;i<sizeof(a)/sizeof(int);i++){
printf("%d \t",*(*(p+j)+i));
}
printf("\n-------------------------\n");
}
return 0;
}
打印结果如下:
这个例子,其实就把一个指针数组里的值,依次打印出来。
要知道,指针数组里的元素,其实都是指向另外一个数组的首地址,*a存的是数组a的首地址,*p=*(p+0)=&a[0],**p=a[0],同理 *(p+1)指向的事数组b的首地址, *(p+1)=&b[0],*(*(p+1))=b[0]
指针的作用有很多,例如:链表,函数指针,以及函数形参的传输,都可以使用指针,减少系统的内存和CPU的消耗。