指针字符串 与 const char * 即const * char 的详细使用讲解

本文详细讲解了指针字符串的使用,包括直接定义字符串指针时的注意事项,const char *的含义及限制,以及char * const的区别。重点阐述了const关键字如何影响指针变量及其指向的数据,说明了指针不可变和指针所指内容不可变的场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

指针字符串的使用问题

在这里插入图片描述
一、直接定义字符串指针的使用注意事项

  1. 定义字符串指针的时候 const char *, 和字符串本身相同,就不会出现警告
  2. const char * == char const *,
  3. 作用:const char * p ,表示的是指针p指向的数值不能修改, 但是可以通过本身自己去修。
  4. 不能通过指针修改指针对应的数值,但是其对应的数值,可以通过本身修改

二、会出现警告的版本,能正常输出,但是不能修改

int main()
{
    char *str = "hellow"; 
    cout << str << endl;
    return 0;
}

输出结果
在这里插入图片描述
虽然左边是char * 类型,但是无法修改的版本

int main()
{
    char *str = "hellow"; 
    str[2] = 'a';
    cout << str << endl;
    return 0;
}

三、可以修改的版本

int main()
{
    char s2[] = "world";
    char *p = s2;
    *p = 'a';
    cout << s2 << endl;
    return 0;
}
  1. 先必须确定右边的字符串放入字符数组中
  2. 然后才可以修改。

四、关于const char * 使用测试

int main()
{
    char s[] = "hellow";
    const char *p = s;
    cout << p << endl;  //输出 hellow
    // *(p) = 'f';  //错误:向只读位置赋值
    // cout << p << endl;
    s[0] = 'f';
    cout << p << endl;//输出 fellow
    return 0;
}
  1. const char * 表示 不能修改 指针 指向的 地址的 内容
  2. 但是地址是可以 改变的, 参照第五条对比
  3. 但是可以通过本身进行修改

五、char * const

int main()
{
    char s[] = "hellow";
    char * const p = s;
    char s2[] = "good";
    // p = s2; //错误:向只读变量‘p’赋值
    p[0] = 'f';
    cout << p << endl; //fellow
    return 0;
}
  1. 表示 指针p指向的 地址 是 无法改变的
  2. 至于 指向的 地址 所存放的内容 是可以 改变的
  3. 可以对比 const char *
int main()
{
    char s[] = "hellow";
    const char *  p = s;
    char s2[] = "good";
    p = s2;
    cout << p << endl; //good
    return 0;
}

参照:
1、https://blog.csdn.net/SilentOB/article/details/76994618
【const char * 、char const *、 char * const 三者的区别】

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值