我有这个程序
#include <stdio.h>
int main(int argc, char *argv[]) {
int i;
for (i=0; i < argc;i++) {
printf("argv[%d] = %s\n", i, argv[i]);
}
}
我想知道这个论点
char *argv[]
。我的第一个想法是这是一个字符指针数组?但是如果我们写:(char *argv)[]
,它应该编译?但后来我收到错误消息
testargs.c:3:20: error: expected declaration specifiers or '...' before '(' token
3 | int main(int argc, (char *argv)[]) {
但是,如果我有
char *(argv[])
,它将正确编译并运行。但就指针和数组而言,这实际上是什么?是指向数组的字符指针,还是什么?
这表示指向
char
的指针数组,换句话说,就是字符串。您认识到这一点的方式是,数组语法 []
被降级为指针,因此这与 **char
相同,指向 char
s 的指针。