美文网首页
c语言用数组和指针表示字符串

c语言用数组和指针表示字符串

作者: KardelShaw | 来源:发表于2021-06-07 00:06 被阅读0次

    可以用数组和指针两种方式表示字符串

    //数组
    char str[] = "my string";
    
    //指针
    char *p_str = "my string";
    

    但是它们的内存管理机制不同。

    相同点:它们都是使用内存中的字符串"my string"。

    不同点:使用数组是先把"my string"的值拷贝一份再赋值到str里。使用指针是使用p_str指向内存中的某个已存在"my string"的地址。

    这意味着数组使用str[2] = '_' 这样的语句只会影响str自己,因为它修改的是拷贝了的值,不会影响原有的"my string"

    p_str[2] = '_'这样的操作就会影响内存中的"my string",从而影响所有使用这个字符串的代码。比如有另一个指针char *p_str0指向的是和p_str相同的"my string",那么用p_str修改了"my string"的值,就会无意中影响到p_str0以及其他用了这个内存存储的"my string"的变量,这是我们不想发生的。 (现在有些编译器已经禁止指针进行这种修改个别字符的行为,即 p_str[2] = '_' ,但是改变整个指针的赋值是可以的,如 p_str = "another string"

    下图展示了两者的主要区别:


    图例

    1)需要修改字符串,用数组形式。
    2)不需要修改字符串,用指针形式,并且加上关键字const,防止自己不小心修改。

    const char *p_str = "my string";   
    

    相关文章

      网友评论

          本文标题:c语言用数组和指针表示字符串

          本文链接:https://www.haomeiwen.com/subject/zxcceltx.html