两个指针语句是否相同?
void reverse(const char * const sPtr){
}
和
void reverse(const char const *sPtr){
}
答案 0 :(得分:5)
没有
const char const *sPtr
相当于
const char *sPtr
。
const char *sPtr
说参数sPtr
是指向const char
的指针。
const char * const sPtr
是指向const
的{{1}}指针。
请注意,这在C99和C11中是等效的:
(C99,6.7.3p4)“如果相同的限定符在同一说明符限定符列表中出现多次,无论是直接还是通过一个或多个typedef,行为都与它只出现一次相同。”
但不是在C89中const char
是违反约束的行为:
(C90,6.5.3)“相同的类型限定符不应在同一说明符列表或限定符列表中直接或通过一个或多个typedef出现多次。”
答案 1 :(得分:2)
你想要达到什么目标?
如果你想要一个const指针,你必须将const
放在*
int * const a;
如果你想要指向const的指针,你必须将const
放在*
const int *a;
答案 2 :(得分:1)
没有
第一个是指向const
的{{1}}指针。
第二个是指向const char
的指针。
const char
绑定到左边,或者右边是左边没有任何内容。