麻烦详细些啊,谢谢
const char*, char const*, 两者相同。指针指向的值是常量,不允许拦旁枣变。指针不是常量,它可以先指向a, 也可以变成再指向b(例如允许 p=a;p=b;)。
char*const,指针是常量,一启陵旦初始化指向了a, 则不允许改变成指向b。指针指向的值可以变(例如允许:p[1]='O';)。
程序例子如下:
#include <stdio.h>
int main()
{
{
char a[6]="abcd", b[10]="1234"简拆;
const char *p;
p=a;
printf("11: %s\n",p);
p=b; printf("12: %s\n",p);
// error p[1]='O'; printf("13: %s\n",p);
};
{
char a[6]="abcd", b[10]="1234";
char * const p =a; //const pointer
printf("21: %s\n",p);
//error p=b; printf("22: %s\n",p); // not allow point to b
p[1]='O'; printf("23: %s\n",p);
};
{ char a[6]="abcd", b[10]="1234";
char const *p; //same as case1
p=a;
printf("31: %s\n",p);
p=b; printf("32: %s\n",p);
//error p[1]='O'; printf("33: %s\n",p);
};
return 0;
}
看*和const谁离右边的定义指针名最近,*离得近的话表示该指针指向一个常量字符串,不能通过该指针改变字符串的内容;const离得近的话宴神表示这是一个常量指针,指针指向做枯的晌胡亏位置一开始就确定,不能改变。
char * const cp : 定义一个指向字符的指针常数,高者凯即const指针
const char* p : 定义一个指向字符常数的指针
char const* p : 等同于戚唤const char* p
本文来自(网络嫌团): (
www.91linux.com) 详细出处参考:
http://
www.91linux.com/html/article/program/cpp/20080101/9442.html
第一个是和第二个都是指针指向的值不可变,第二个是指针不可变