码迷,mamicode.com
首页 > 其他好文 > 详细

二维数组及二维指针的传递及一些思考

时间:2014-05-04 19:22:30      阅读:377      评论:0      收藏:0      [点我收藏+]

标签:style   blog   class   code   java   color   

二维数组和二位指针在程序知识中是一个难点,往往会将人弄得头昏眼花。总结一下这个难点的相关问题。

二维数组,顾名思义就是数组的数组;二维指针是指针的指针。首先,我们来看看二维数组和二维指针等价的问题。

在《C专家编程》10.3节的小启发里讲的很透彻:(以下这段文字及对比一定要认真分析!)

数组和指针参数是如何被编译器修改的?

数组名被改写成一个指针参数”规则并不是递归定义的。数组的数组会被改写成“数组的指针”,而不是“指针的指针”:

实参                                                     所匹配的形参

数组的数组           char c[8][10];                      char (*)[10];          数组指针

指针数组             char *c[10];                        char **c;              指针的指针

数组指针(行指针)     char (*c)[10];                      char (*c)[10];         不改变

指针的指针           char **c;                           char **c;              不改变

可仔细体会一下上述表格,如果能理解,那是极好的,如果不能,我将举个栗子来帮助理解。

栗子1:

bubuko.com,布布扣
 1 #include <stdio.h>
 2 #include <string.h>
 3 
 4 void func(char **ptr)
 5 {
 6     char arry[6][30] =
 7     {
 8         "ABCDEFG",
 9         "HIJKLMN",
10         "OPQ",
11         "RST",
12         "UVW",
13         "XYZ",
14     };
15     ptr = arry;
16 }
17 
18 int main(int argc, char *argv[])
19 {
20     char **ptr = NULL;
21     func(ptr);
22     printf("%s\n", ptr);
23     return 0;
24 }
bubuko.com,布布扣

这个栗子不多解释,完全错误的传递。

 

栗子2:

 

二维数组及二维指针的传递及一些思考,布布扣,bubuko.com

二维数组及二维指针的传递及一些思考

标签:style   blog   class   code   java   color   

原文地址:http://www.cnblogs.com/majiangjiang/p/3706472.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!