gpt4 book ai didi

arrays - 用方括号解释函数指针参数

转载 作者:太空宇宙 更新时间:2023-11-03 23:30:44 25 4
gpt4 key购买 nike

您好,我正在学习 C 并正在学习教程,我已经阅读了有关指针的基础知识。

main(int argc, char *argv[])

我真的不明白如何解释 char *argv[]

我读它是因为 CharPointer 指向 argv 数组,还是指向由 char 构成的 chararray 的指针?

[更新]

我可能错了,但我认为我很困惑,因为我熟悉:

char* argv[] // pointer to char array 
char argv[]* // set value in pointee

但是我从未见过char *argv[]

最佳答案

你从里到外阅读 C 声明,记住主要运算符 .->[] 具有更高的优先于 * 等一元运算符。因此,您向左或向右,由内而外,从嵌套最深的部分开始,并根据优先级选择向左或向右。

char *argv[]; // argv is an array of pointer to char
int (*f)(); // f is a pointer to a function returning int

这是我刚刚制作的一个完整示例,您可以运行它:

int main(void);

// g is an array of pointer-to-function with no parameters returning int
int (*g[])(void) = {
main,
main
};

// f is an array of pointer-to-array of pointer-to-function returning int
int (*(*f[2])[2])(void) = {
&g,
&g,
};


int main(void) {
return *f[0][0] == main;
}

$ ./a.out
$ echo $?
# => 1

关于arrays - 用方括号解释函数指针参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16138057/

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