char (* pb)[4] 和 char * pb[4] 的区别(为了避免误导,这里欢迎讨论,不要作为定论!!个人见解,可能会有错误)
来源:互联网 发布:歌手王芳 知乎 编辑:程序博客网 时间:2024/05/24 08:34
#include <stdio.h>int main(){char a[3][4]={"123","456","789"};char (*pa)[4]=a; /*------ right!-------*/char *(pb[10])={NULL,NULL,NULL,NULL,NULL}; /*-------how???-------*//*pa[0]=a;----------------Error!------------*/pb[0]=a[0];printf("pa=%s\npb=%s\n",pa+1,*pb);}
未避免错误,这里欢迎讨论,不要作为定论!!个人见解,下面的结论可能会有错误!!!
char (* pb)[4] -------- 1个空间变量,存储的是指针,指针指向char类型的数组,这个数组的长度是4个字节。
char * pb[4] ---------4个空间变量,存储的是4个指针,指针指向char类型的数组,这个数组的长度没有限制。
char * pb[4]相当于char * (pa[4])是一个有4个元素的数组,每个元素的类型是char 类型的指针,即指针型数组
char (* pa)[4] 是一个指针变量,它可以指向某个一位长度为4个char的一维数组。即pa++ 表示指针加4和char的长度。也就是左图中pa:DS:FFB8 ,则 pa+1:DS:FFBC。这里的数字4表示所指向“字符数组的长度”这里也做过测试就是将4改为2,char(*ap)[2]=a,编译时编译器会有警告提示,pa++则FFB8变成FFBA ,*pa会输出3.
下面是测试的图:
0 0
- char (* pb)[4] 和 char * pb[4] 的区别(为了避免误导,这里欢迎讨论,不要作为定论!!个人见解,可能会有错误)
- char *和char[]的一点小见解
- char* 和 char[]的区别:
- char * 和 char []的区别
- char *和char [ ]的区别
- char* 和char[]的区别
- char* 和char[]的区别
- char * 和 char []的区别
- char* 和char[]的区别
- char* 和char[]的区别
- char* 和 char[]的区别
- char* 和char[]的区别
- char* 和char[]的区别
- char* 和char[]的区别
- char[]和char*的区别
- char* 和char[]的区别
- char* 和char[]的区别
- char* 和char[]的区别
- MyBatis中的数据库动态查询的编写
- hive2.0版本整合hbase1.2.1
- EM算法
- UI高级之UIWindow
- Uva 107 The Cat in the Hat
- char (* pb)[4] 和 char * pb[4] 的区别(为了避免误导,这里欢迎讨论,不要作为定论!!个人见解,可能会有错误)
- python datetime 时间日期处理
- Android事件分发总结
- UI高级-UIApplication单例
- 洛谷 U2878 小R的分数比赛(fraction)
- 图像的均值滤波和方框滤波
- 二叉搜索树的性质
- poj 1172 Street Race
- Linux常用命令集锦