码迷,mamicode.com
首页 > 其他好文 > 详细

指针和字符串常量

时间:2014-08-24 16:44:22      阅读:116      评论:0      收藏:0      [点我收藏+]

标签:指针   字符串常量   

指针和字符串常量

首先比较两段代码

代码1

    char ch1[] = "hello";
    *ch1 = 'H';            //OK
    ch1[0] = 'H';          //OK
    printf("%s\r\n",ch1);

代码2

    char *ch2 = "world";
    *ch2 = 'W';            //运行时错误
    ch2[0] = 'W';          //运行时错误
    printf("%s\r\n",ch2);

这里的“world”是字符串常量,而“hello”不是。

代码2里,*ch2和ch2[0]其实就是指‘w’,而‘w’是常量自然无法修改!

一般定义成 const char * = “world”;避免上述运行时的错误。

如果想修改字符串的值,就应该定义成代码1的形式!或者如下在堆上申请:

    char *s = (char *)malloc(sizeof(char)*6);
    strcpy(s, "hello");
    s[0] = 'H';
    printf("%s\r\n", s);
这个“hello”也不是一个字符串常量,因为是在堆上申请的,也可以用指针来读和写!

指针和字符串常量

标签:指针   字符串常量   

原文地址:http://blog.csdn.net/devil_pull/article/details/38796661

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!