如何将数组[]的地址存储在变量中

Dan*_*eam 2 c arrays pointers

这似乎是一个愚蠢的问题。我有一个字符数组,想要将数组的地址存储在另一个变量中,但似乎无法声明数组地址的正确类型(我正在使用 gcc):

\n
\n

在:

\n
int main(void){\n  char cha[] = "abcde";\n  char **arrayAddress = &cha;\n}\n
Run Code Online (Sandbox Code Playgroud)\n

出去:

\n
arrayaddress.c: In function \xe2\x80\x98main\xe2\x80\x99:\narrayaddress.c:3:25: warning: initialization of \xe2\x80\x98char **\xe2\x80\x99 from incompatible pointer type \xe2\x80\x98char (*)[6]\xe2\x80\x99 [-Wincompatible-pointer-types]\n    3 |   char **arrayAddress = &cha;\n      |                         ^\n
Run Code Online (Sandbox Code Playgroud)\n
\n

这是预期的,我在其他地方读过, 的类型cha应该是char(*)[6]. 但是当我尝试arrayAddress用这种类型声明时,我的程序失败了:

\n
\n

在:

\n
arrayaddress.c: In function \xe2\x80\x98main\xe2\x80\x99:\narrayaddress.c:3:25: warning: initialization of \xe2\x80\x98char **\xe2\x80\x99 from incompatible pointer type \xe2\x80\x98char (*)[6]\xe2\x80\x99 [-Wincompatible-pointer-types]\n    3 |   char **arrayAddress = &cha;\n      |                         ^\n
Run Code Online (Sandbox Code Playgroud)\n

出去:

\n
arrayaddress.c: In function \xe2\x80\x98main\xe2\x80\x99:\narrayaddress.c:3:10: error: expected identifier or \xe2\x80\x98(\xe2\x80\x99 before \xe2\x80\x98)\xe2\x80\x99 token\n    3 |   char (*)[6]arrayAddress = &cha;\n      |          ^\nmake: *** [<builtin>: arrayaddress] Error 1\n       ^\n
Run Code Online (Sandbox Code Playgroud)\n
\n

我该如何arrayAddress正确定义?

\n

kir*_*ppo 5

这个已经写完了

char (*arrayAddress)[6] = &cha;
Run Code Online (Sandbox Code Playgroud)

请注意,变量的名称隐藏在表达式的中间。