constant pointer in C
本问题已经有最佳答案,请猛点这里访问。
Possible Duplicate:
What is the difference between char s[] and char *s in C?
有一个程序:
1 2 3 4 5 6 7 8 9 10 11 | #include<stdio.h> int main() { char str[20] ="Hello"; char *const p=str; *p='M'; printf("%s ", str); return 0; } |
这把梅洛印成了答案。但是既然p是一个常量指针,它不应该给出一个错误吗?
准确地说,它是一个包含指针。你不能改变它的指向。你可以改变它的意义。
1 2 3 | const char *p; // a pointer to const char char * const p; // a const pointer to char const char * const p; //combined... |
记住语法最简单的方法是根本不记住它。请从右到左阅读声明:—)
有一个详细的解释:const char vs.char const vs.const*char const
常量指针和指向常量数据的指针之间存在差异。考虑这四个方面:
1 2 3 4 | const char * p=str; // p[0] is const char const * p=str; // same char *const p=str; // p is const. *p is not char const *const p=str; // p is const, p[0] also |
您不能更改EDOCX1的值(1),但可以更改EDOCX1的值(3)。
如果你写了