是Str"指针"还是"指针指针" Str[3][5]?
我通常声明char **Str要制作一个模拟的2D数组,但是如何将地址发送Str[3][5]到另一个函数,以及如何设置该函数的参数以便修改值Str[3][5]?
据我所知,编译器将2D数组视为普通数组,因此我应该将Str(指针)发送到另一个函数.但是如何修改Str[3][5]通过接收指针的值?
在大多数表达式中使用时,T数组将衰减为"指向T的指针"类型的指针,其值等于数组的第一个元素的地址.
如果Str声明为:
char Str[3][5];
Run Code Online (Sandbox Code Playgroud)
然后Str会腐烂char (*)[5],并具有价值&Str[0].如果传递给函数,则可以按如下方式声明函数:
void foo (char (*str)[5], size_t n);
Run Code Online (Sandbox Code Playgroud)
在内部foo(),您可以str像访问Str自己一样访问.