您的位置:首页 > 其它

指针数组和数组指针的区别

2018-03-05 18:15 183 查看
(一)何为指针数组?

指针数组的本质上就是一个数组,其英文的解释为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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息