如何制作和使用双指针(数组指针)?
我的意思是双指针与数组指针混合..
你会检查最后三条评论的行吗?
#include <stdio.h>
void func( char(*)[3]);
void func2( char* (*)[3]); // isit right?:-/
//main has a 2dim array and call a func
int main()
{
char tst[2][3] = {"abc", "def"};
func(tst);
return 0;
}
//and some function take that array's pointer
void func( char(* ap)[3])
{
func2(&ap??); // what can be inside ()..?
}
void func2( char* (*ap)[3]) // or char *(*ap[3])???
{
printf("%s", (*ap)[1]); // confusing,,
}
答案 0 :(得分:0)
首先,这里有一个小问题:char tst[2][3] = {"abc", "def"};
,您必须在每个字符串的末尾允许一个'\ 0'。因此char tst[2][4] = {"abc", "def"};
是必要的。
然后,关于指针,这里有2个概念:
char array tst[2][4]
作为参数传递给函数时,它会衰减为指向4个字符的数组的指针,因此这是正确的:func接受类型为{{ 1}}。
中,ap就是这样的指针。因此,如果您要将其地址传递给func2,func2将以指向4个字符的数组的指针的指针作为参数,如下所示:
char(* ap)[4]