我刚刚学习了函数指针,并且要声明一个函数指针,你必须*在括号中添加指针名称,以确保它不返回int *.
两者之间有区别吗?
int *p
Run Code Online (Sandbox Code Playgroud)
和
int (*p)
Run Code Online (Sandbox Code Playgroud)
我尝试用cdecl查找,但到目前为止没有运气.cdecl说这是一回事,但没有提供解释.如果我宣布
short (*p)
Run Code Online (Sandbox Code Playgroud)
那会是一个短指针还是一个短指针?将p具有2个字节或4的大小?我知道有类似的问题,但到目前为止我还没有运气.
两者之间会有区别吗?
Run Code Online (Sandbox Code Playgroud)int *p和
Run Code Online (Sandbox Code Playgroud)int (*p)
不.这是两种不同的写同类型的方式.括号在这里并不神奇 - 它们只是用于覆盖优先级,就像算术运算符一样.
区别在于
int *p();
Run Code Online (Sandbox Code Playgroud)
(函数"p"返回的声明int *)和
int (*p)();
Run Code Online (Sandbox Code Playgroud)
(声明返回函数的指针int).如果没有括号*p,则(空)参数列表与声明的名称关联得更紧密.
如果我做了:
Run Code Online (Sandbox Code Playgroud)short (*p)将是一个短指针,或指向一个短指针?那将
p是2个字节,还是4个字节?
类似于int (*p)它声明指向a的指针short.指针的大小是特定于实现的,但是4个字节和8个字节是常见的选择.指向的数据预计是a的大小,short也是特定于实现的,但通常是2.