C// 数组指针双指针的用法.不是指针数组

  • 本文关键字:指针 数组 用法 c pointers
  • 更新时间 :
  • 英文 :


如何制作和使用双指针哪个点(数组指针(?

我的意思是双指针与数组指针混合。.

你会检查最后三行评论吗?

#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,,
}

好吧,首先这里有一个小问题:char tst[2][3] = {"abc", "def"};,你必须在每个字符串的末尾允许一个"\0"。 所以char tst[2][4] = {"abc", "def"};是必要的。

然后,关于指针,这里有 2 个概念:

  1. 当作为参数传递给函数时,char array tst[2][4]衰减到指向 4 个字符数组的指针,因此一个是正确的:func 接受类型 char(* ap)[4] 的参数。

  2. 在 func 内部,AP 就是这样一个指针。因此,如果要将其地址传递给 func2,func2 会将指向指向 4 个字符数组的指针作为参数,如下所示:

     void func2(char (**ap)[4])
     {
       printf("%s", (*ap)[1]);
     }
    

最新更新