Mic*_*eal 2 c arrays pointers increment argv
它出现在K&R的书中
#include <stdio.h>
main(int argc, char *argv[])
{
while (--argc > 0)
printf("%s%s", *++argv, (argc > 1) > " " : "");
printf("\n");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
在本书中,它说数组不能使用递增或递减运算符,在这个程序中,"argv"应该是数组的名称,为什么它可以使用递增运算符?
主要的第二个参数
char *argv[]
Run Code Online (Sandbox Code Playgroud)
被调整为指向数组的第一个元素.那是它的类型
char **argv;
Run Code Online (Sandbox Code Playgroud)
你可以增加指针.
因此,最初argv(调整为指针)指向指向字符串的指针数组的第一个元素,然后++argv指向数组的第二个元素,依此类推.
根据C标准(6.7.6.3函数声明符(包括原型))
- 一个参数为""类型的阵列""的声明,应调整至""合格指针为类型"",其中类型限定符(如果有的话)的那些内的指定
[和]该阵列类型的推导.