为什么数组变量需要星号?

Ari*_*hao 1 c arrays pointers declaration

看下面的代码段,C语言中的数组已经是一个保存数组第一个元素地址的指针了,那为什么变量还要加星号呢argv

char *argv[3]; 

argv[0] = "echo";
argv[1] = "hello";
argv[2] = 0;
exec("/bin/echo", argv);
printf("exec error\n");
Run Code Online (Sandbox Code Playgroud)

Jon*_*een 5

argv是一个指向 的指针数组charargv[0]a 也是如此char*,as isargv[1]等等。

您可以从最高优先级运算符从声明的名称向外读取类型。由于[](数组运算符)的优先级高于*(间接),因此您可以将其读作:

  • argv
  • ...是一个数组 ( [])
  • ...指针 ( *)
  • ...到char