二级指针与二维数组的秘密【二者不等】
2012-01-03 23:21
183 查看
View Code
第一种情况 char buf[10][5]; //可以解析为有10行字符串 每行5个字节 char (*p)[5] = buf; //数组的指针p指向数组[5] 指针++ 跨度为5字节 char **tp = (char**)buf; //二级指针tp指向数组[10][5] 指针++ 跨度也就是10X5 = 50个字节 //对第一行进行赋值 strcpy(buf[0],"abc"); strcpy(p[1],"123"); //三者地址一样 printf("%s %s \n",buf[0],buf[1]); //成功打印 解析度为一行 buf[1]一样有效 printf("%s %s \n",p[0],p[1]); //成功打印 解析度为一行 p[1]一样有效 printf("%s",tp[0]); //报错,解析度为整个数组,tp[1]会打印出未知的地址,错误的语法。 第二种情况 int fun(char**tp,char(*op)[5],char p[][5]) { //三者地址都一样,前两者等价 printf("%s \n",p[0]); //成功打印 解析度为一行 p[1]一样有效 printf("%s \n",op[0]); //成功打印 解析度为一行 op[1]一样有效 printf("%s",tp[0]); //报错,解析度为整个数组,tp[1]会打印出未知的地址,错误的语法。 return 0; } int main() { char buf[10][5]; //解析为有10行字符串 每行5个字节 //对第一行进行赋值 strcpy(buf[0],"abc"); fun((char**)buf,buf,buf); return 0; }
相关文章推荐
- 二级指针和二维数组的比较
- 二级指针和二维数组的转换
- 二级指针与二维数组
- C++ 二级指针和二维数组
- C/C++学习之C提高-----非空格的字符串长度、去掉字符串前后空格、字符串反转、键值对字符串、const练习、二级指针做输入/输出的特性、将字符串按逗号分开,并放入二维数组打印出来
- 二维数组和二级指针
- 对二级指针、指针数组、二维数组名的理解1
- 二维数组与二级指针
- 二维数组和二级指针
- 二维数组(二级指针的第二种内存模型)
- 二维数组与二级指针的区别
- 二维数组与二级指针
- 二级指针与二维数组--2
- 二维数组与二级指针
- 二维数组、行指针、指针数组、二级指针
- 二维数组、行指针、指针数组、二级指针
- 二级指针和二维数组
- 二维数组和二级指针
- 二维数组与二级指针
- 二维数组名就是二级指针,但是又不能像下面这样操作