const char*, char const*, char* const 将*读成 pointer to(指向),
反着念就ok了
char * const p; // p is a const pointer to char; p是指向char的常量指针(char不是常量)
char const * p; // p is a pointer to const char; p是指向常量char的指针(p不是常量)
const char * p; // 同上。因为C 标准规定,const关键字放在类型或变量名之前等价的。C 里面没有const*的运算符
const char *name="ao"; 等同 char const *name="ao"; name是指向常量char的指针
name的指向可以改变如name = "abc"; name所指的内存不能被修改,例子如下。
char *const name = "tai" ;name是指向char的常量指针,name只能指向一个地址,name = "abc"会报错
strcpy(name,"bc");由于“tai”在常量区,所以name所指的没有内存空间,应该写成char *tname =(char *)malloc(10); char * const name = tname; strcpy(name,"k"); free(tname);
程序可以写的很乱,但千万别内存泄露,这个令人头疼。
阅读(906) | 评论(0) | 转发(1) |