指针数组和数组指针的区别
2018-03-05 18:15
183 查看
(一)何为指针数组?
指针数组的本质上就是一个数组,其英文的解释为array of pointers,即用于存储指针的数组,说白了就是一个数组里面放着一堆的指针。
例如:char*a[4] 的含义为存在一个数组,这个数组里面存放着4个char* 类型的指针。
(二)何为数组指针
数组指针的本质上就是一个指针,其英文的解释为a pointer to an array,说白了就是指向一个数组的指针。
例如 char(a)[4]的含义为存在一个(或多个)类型的char()[]指针指向了一个(或多个)长度为4 char型数组。
指针数组的本质上就是一个数组,其英文的解释为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; }
相关文章推荐
- 指针数组和数组指针的区别
- 指针数组与数组指针的区别
- 【指针篇】C语言:指针与数组的区别,数组指针与指针数组的剖析。
- 指针数组和数组指针的区别
- 如何区别指针数组和数组指针 && 如何区别函数指针和指针函数
- 指针数组和数组指针的区别
- 指针数组和数组指针的区别
- 指针数组和数组指针的区别
- 指针数组和数组指针的区别
- 指针数组和数组指针的区别
- 指针数组和数组指针的区别
- 指针数组和数组指针的区别
- 指针数组和数组指针的区别
- 20170911_指针数组和数组指针的区别
- 指针数组和数组指针的区别
- 指针数组和数组指针的区别
- 指针数组和数组指针的区别
- 指针数组和数组指针的区别
- 指针数组和数组指针的区别
- 指针数组和数组指针的区别