• C 语言中char* 和const char*的区别


    const char *p = "123";

    p[1] = '3'; // 会报错
    p = "456"; // 不会报错

    const char * 只是说指针指向的内容不可变,但指针本身可以再赋值

    假设你的程序是
    char * findArg(char *s) {
    return s;
    }

    这个时候,你如果传const char *进去,那么好一些的编译器,会知道,你传回的函数返回值,也是const char *,也就是指针指向的内容不可写。

    所以如果你传进去的是const char *,最好还是把 char *name写成const char *name,因为char *name可以对指针指向的内容进行修改。

    用强制转换当然也可以,但是
    const char *name2 = "123";
    char *name = (char *)name2;
    如果你对name指向的内容进行改变,如 name[2] = '4';
    "123"是常量,对常量进行修改,你的程序就会发生不可预知的错误

    char* findArg(char *){.....}
    如果你这个函数,对传入的参数,不会对指针指向的内容进行修改,最好写成 char * findArg(const char *) {....}
    或 const char * findArg(const char *) {....}
  • 相关阅读:
    C语言I博客作业06
    C语言I博客作业05
    C语言I博客作业04
    C语言I博客作业03
    C语言I博客作业02
    作业01
    java ui 点点记
    eclipse修改workspace目录
    postgres恢复
    JDK1.4和JDK1.5以及1.6
  • 原文地址:https://www.cnblogs.com/ransn/p/8034841.html
Copyright © 2020-2023  润新知