LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 701|回复: 7

CONST的问题??????

[复制链接]
发表于 2005-5-23 22:49:43 | 显示全部楼层 |阅读模式
问一下const char *p; char const *p;char * const p;有什么不同.
int main(void)
{
  const int i=0;

  i=1;
  printf("the i is %d\n",i);

  exit(0);
}
这段程序为什么只有告警没有报错呢
发表于 2005-5-24 08:58:57 | 显示全部楼层
const char *p的意思是p是一个指向const char的指针,p可以指向不同的对象,但不能改变p指向的对象的值。
char const *p和char * const p的意思是一样的。p都是指向char的指针,但p只能在初始化时指向一个对象,然后就不能指向其它对象了,但p指向的对象的值可以改变。
回复 支持 反对

使用道具 举报

发表于 2005-5-24 09:32:03 | 显示全部楼层
呵呵, const char *p和char const *p是一样的:)
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-5-24 11:15:13 | 显示全部楼层
恩,楼上说的是对的。
我用Dev—c++编译的时候只是告警,不报错。不知道你们用其他的编译器是不是也这样啊
回复 支持 反对

使用道具 举报

发表于 2005-5-24 21:16:33 | 显示全部楼层
Post by firemoth
char const *p和char * const p的意思是一样的。p都是指向char的指针,但p只能在初始化时指向一个对象,然后就不能指向其它对象了,但p指向的对象的值可以改变。

char const *p和char * const p的意思不一样。
回复 支持 反对

使用道具 举报

发表于 2005-5-25 08:51:51 | 显示全部楼层
Post by firemoth
const char *p的意思是p是一个指向const char的指针,p可以指向不同的对象,但不能改变p指向的对象的值。
char const *p和char * const p的意思是一样的。p都是指向char的指针,但p只能在初始化时指向一个对象,然后就不能指向其它对象了,但p指向的对象的值可以改变。

我说错了。应该是const char *p和char const *p是一样的。
const如果在*左边,指针指向的对象的值不能改变,如果在右边,则指针本身不能改变。
回复 支持 反对

使用道具 举报

发表于 2005-5-25 09:15:41 | 显示全部楼层
Post by chairman

int main(void)
{
  const int i=0;

  i=1;
  printf("the i is %d\n",i);

  exit(0);
}
这段程序为什么只有告警没有报错呢

换一个编译器试试,比如vc
可能你会发现不一样的结果 ^_^
回复 支持 反对

使用道具 举报

发表于 2005-5-25 09:20:20 | 显示全部楼层
Post by firemoth
const char *p的意思是p是一个指向const char的指针,p可以指向不同的对象,但不能改变p指向的对象的值。
char const *p和char * const p的意思是一样的。p都是指向char的指针,但p只能在初始化时指向一个对象,然后就不能指向其它对象了,但p指向的对象的值可以改变。


是这两种意义,不过const char *p和char const *p对应第一种,
char * const p对应第二种。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表