gpt4 book ai didi

c - 为什么 argv 可以使用自增运算符

转载 作者:行者123 更新时间:2023-12-01 08:57:04 25 4
gpt4 key购买 nike

在 K&R 的书中

#include <stdio.h>

main(int argc, char *argv[])
{
while (--argc > 0)
printf("%s%s", *++argv, (argc > 1) > " " : "");
printf("\n");
return 0;
}

这本书里说数组不能使用自增或自减操作符,在这个程序中“argv”应该是数组的名字,为什么可以使用自增操作符?

最佳答案

main的第二个参数

char *argv[]

被调整为指向数组第一个元素的指针。那就是它有类型

char **argv;

你可以增加指针。

因此,最初 argv (调整为指针)指向字符串指针数组的第一个元素,然后 ++argv 指向数组的第二个元素等等。

根据 C 标准 (6.7.6.3 Function declarators (including prototypes))

  1. A declaration of a parameter as ‘‘array of type’’ shall be adjusted to ‘‘qualified pointer to type’’, where the type qualifiers (if any) are those specified within the [ and ] of the array type derivation.

关于c - 为什么 argv 可以使用自增运算符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32033977/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com