指针数组 与 数组指针 的理解
起因: 使用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\n", 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\n", p[0], p[1]); //结果是: out.txt 222
以上代码仅供参考,我是复制上去, 然后手动修改了一些,可能有些bug存在, 有请大神告知。