指针数组 与 数组指针 的理解

起因: 使用void * 指针传参, 改了半天没出bug。

指针数组array of pointers,即用于存储指针的数组,也就是数组元素都是指针

数组指针a pointer to an array,即指向数组的指针

大一看这名称可以理解, 时间久了就忘记了, 咱们可以这样理解。

指针数组 是 数组 —— 数组里存的是指针。 定义: char *p[2]; 

数组指针指针 —— 指针指向的是数组。 定义: char (*p)[2]; 


指针数组:

/**** 指针数组 ****/

//数组都是指针, 要分配内存, 在赋值 。 
char *p[2]; 
p[0] = (char*)malloc(10*sizeof(char)); 
p[1] = (char*)malloc(10*sizeof(char)); 

strcpy(p[0], "in.txt"); 
strcpy(p[1], "111"); 

fprintf(stderr, "%s %s
", p[0], p[1]); 

  

数组指针:

/**** 数组指针 ****/
#define NMAX 10

char outFileName[2][NMAX]; 
strcpy(outFileName[0], "out.txt"); 
strcpy(outFileName[1], "222"); 

//argv 就是数组指针。
char (*p)[NMAX]; 
p = outFileName; 
fprintf(stderr, "%s %s
", p[0], p[1]); 
//结果是: out.txt 222

  

以上代码仅供参考,我是复制上去, 然后手动修改了一些,可能有些bug存在, 有请大神告知。

原文地址:https://www.cnblogs.com/jluzhsai/p/3548931.html