免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2028 | 回复: 5
打印 上一主题 下一主题

[C] 这段代码为什么没问题? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-01-15 19:46 |只看该作者 |倒序浏览
[table=95%][tr][td][font=FixedSys]
static const char *typeName(JSCell *val)
{
  const char *name = "???";
  switch (val->type()) {
    case UnspecifiedType:
      break;
    case UndefinedType:
      name = "undefined";
      break;
    case NullType:
      name = "null";
      break;
    case BooleanType:
      name = "boolean";
      break;
    case StringType:
      name = "string";
      break;
    case NumberType:
      name = "number";
      break;
    case ObjectType: {
      const ClassInfo *info = static_cast<JSObject *>(val)->classInfo();
      name = info ? info->className : "Object";
      break;
    }
    case GetterSetterType:
      name = "gettersetter";
      break;
  }
  return name;
}[/font][/td][/tr][/table]

const char *name 在case中可以改变值吗?

[[i] 本帖最后由 yanjun1 于 2008-1-15 19:47 编辑 [/i]]

论坛徽章:
0
2 [报告]
发表于 2008-01-15 20:18 |只看该作者
为什么不能?

论坛徽章:
0
3 [报告]
发表于 2008-01-15 20:32 |只看该作者
当然可以,定义只说明他所指得内容不能修改,又不说他本身不能修改

论坛徽章:
0
4 [报告]
发表于 2008-01-15 20:38 |只看该作者
const char *
char * const

论坛徽章:
0
5 [报告]
发表于 2008-01-16 05:38 |只看该作者
#include <stdio.h>

int main(void)
{
        char name[] = "foo";
        const char * pcs = "foo";
        char * const cps = name;

        pcs = "bar";
        pcs = name;
        cps[0] = 'f';

        pcs[0] = 'f';
        cps = "bar";
        cps = name;

        return 0;
}
编译一下, 看看报的错就明白了.

论坛徽章:
0
6 [报告]
发表于 2008-01-16 11:56 |只看该作者
谢谢。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP