(一)何为指针数组?
指针数组的本质上就是一个数组,其英文的解释为array of pointers,即用于存储指针的数组,说白了就是一个数组里面放着一堆的指针。
例如:char*a[4] 的含义为存在一个数组,这个数组里面存放着4个char* 类型的指针。
#include<stdio.h>
#include<string.h>
#include<malloc.h>
int main(void)
{
char *array[4];
for(int i = 0;i < 4 ;i++)
{
//array[i]其指向的地址是的一个未知的地址,很多情况下为NULL地址,
//所以要使用array[i]指针,那么就必须为其分配地址
array[i] = (char *)malloc(sizeof(char) * 64);
sprintf(array[i],"%s%d","array",i);
}
for(int i = 0;i < 4 ;i++)
{
printf("%s\n",array[i]);
//释放内存
free(array[i]);
}
}
(二)何为数组指针
数组指针的本质上就是一个指针,其英文的解释为a pointer to an array,说白了就是指向一个数组的指针。
例如 char(a)[4]的含义为存在一个(或多个)类型的char()[]指针指向了一个(或多个)长度为4 char型数组。
#include<stdio.h>
#include<string.h>
#include<malloc.h>
int main(void)
{
char (*pointer_to_arr)[64] = NULL;
pointer_to_arr = (char(*)[]) malloc(sizeof(char[64]) * 10);
for(int i = 0;i < 10;i++)
{
sprintf(*(pointer_to_arr+i),"%s%d","array_to_pointer",i);
printf("%s\n",*(pointer_to_arr+i));
}
free(pointer_to_arr);
return 0;
}