如果 p 是一个指针(比如
int * p
),那么[p]
意味着什么?还有什么4[p]
意思?(即将标量与 [p] 相乘)假设 xyz 是程序中定义的某种数据类型。然后做什么
void (*xyz)(void);
声明是什么意思?
问问题
175 次
4 回答
6
4[p]
意思相同p[4]
。参见例如http://c-faq.com/aryptr/joke.html。如果
xyz
已经是一种数据类型,那么这是一个错误。如果不是,那么它是一个名为 的函数指针的定义xyz
。假设您的意思是“void
”不是“coid
”,那么cdecl.org 会告诉我们:将 xyz 声明为指向返回 void 的函数 (void) 的指针
于 2013-01-20T12:34:27.940 回答
3
于 2013-01-20T12:38:40.830 回答
2
是什么
[p]
意思?
本身没什么。
还有什么
4[p]
意思?
由于指针算术,4[p]
意味着*(4 + p)
,即,假设加法是可交换的,等价于*(p + 4)
,而后者又可以写为p[4]
,即它是 指向的数组的第 5 个元素p
。
如果
xyz
是数据类型,那么void (*xyz)(void);
语句是什么意思?
那么这是一个语法错误。
如果xyz
不是数据类型,则它声明xyz
为函数指针获取和返回void
(即“无”)。
于 2013-01-20T12:36:21.960 回答
2
1) 4[p] 与 p[4] 的含义相同,两者本质上都意味着 *(p+4) ,这意味着从数组开始的第 5 个元素p
。
2)xyz
是指向函数的指针类型,它不接受任何争论并且不返回任何内容。
typedef void (*xyz)(void);
void func();
xyz f= func;
如果以下列方式使用,它也可能是函数指针本身
//imagine the above typedef is omitted.
void (*xyz)(void) = func;
void (*xyz)(void); // uninitialized pointer.
于 2013-01-20T12:36:37.263 回答