理解特定C指针定义的学校作业
在一门C入门课程(在一所工程大学)中,我们被要求用理解特定C指针定义的学校作业,c,pointers,syntax,C,Pointers,Syntax,在一门C入门课程(在一所工程大学)中,我们被要求用int(**f[5])(void))[10]的指针识别一个声明 我目前对声明的理解是“一个包含10个函数指针的数组,每个函数指针返回一个int指针,而不接受任何参数” 有人能证实我对声明的理解,并告诉我这些定义在实践中是否有用吗?int(*(*f[5])(void))[10]声明(*(*f[5])(void))[10]为int 这意味着(*(*f[5])(void))是一个10int的数组 这意味着(*f[5])(void)是指向10int数组的
int(**f[5])(void))[10]的指针识别一个声明代码>
我目前对声明的理解是“一个包含10个函数指针的数组,每个函数指针返回一个int指针,而不接受任何参数”
有人能证实我对声明的理解,并告诉我这些定义在实践中是否有用吗?int(*(*f[5])(void))[10]
声明(*(*f[5])(void))[10]
为int
这意味着(*(*f[5])(void))
是一个10int
的数组
这意味着(*f[5])(void)
是指向10int
数组的指针
这意味着(*f[5])
是一个函数,它获取void
并返回一个指向10int
数组的指针
这意味着f[5]
是一个指向函数的指针,该函数取void
并返回一个指向10int
数组的指针
这意味着f
是一个由5个指针组成的数组,指向取void
并返回一个指向10int
int(*(*f[5])(void))[10]
的数组的函数,声明(*(*f[5])(void))[10]
为int
这意味着(*(*f[5])(void))
是一个10int
的数组
这意味着(*f[5])(void)
是指向10int
数组的指针
这意味着(*f[5])
是一个函数,它获取void
并返回一个指向10int
数组的指针
这意味着f[5]
是一个指向函数的指针,该函数取void
并返回一个指向10int
数组的指针
这意味着f
是一个由5个指针组成的数组,指向取void
并返回一个指向10个int
数组的指针的函数。我建议您遵循这个方法。从变量开始(f
,在您的情况下)向外。在实践中,没有多少C程序员知道这个声明的含义。如果他们需要像这样复杂的东西,他们会使用typedef使它更具可读性。这可能是一个典型的学校作业,学习C声明如何工作。当你学会了这一点,你也学会了永远不要这样做。可能除了4月1日的代码审查。我建议您遵循。从变量开始(f
,在您的情况下)向外。在实践中,没有多少C程序员知道这个声明的含义。如果他们需要像这样复杂的东西,他们会使用typedef使它更具可读性。这可能是一个典型的学校作业,学习C声明如何工作。当你学会了这一点,你也学会了永远不要这样做。可能除了4月1日的代码审查。