我们首先了解str这个二维数组的的内存布局是如何的: str 将在 foo的堆栈上分配了一块2*20 (40 bytes)的连续区域:假设str 的地址为: 0xbf8179f8。 /* 以 char ** 类型, 作为形参时, 那么是对 char[][20]二维数组造型为char **类型,是对0xbf8179f8这地区域施行 char **类型的操作 */ 二、 /* 对 0xbf8179f8 内存块施行 char [] 的操作 */ 三、 /* 造型为 char (*str)[20] */ 四、 通过以下四个例子。不难看出: char **str 等价于 char *str[] char (*str)[20] 等价于 char [][20]; 当二维数组作为实参时,使用 char (*str)[20] 与 char [][20] 作为形参才是正确的用法。 |
(转帖)二维数组作为实参时
最新推荐文章于 2023-02-02 15:43:02 发布