一、含义的不同
char* 表示一个指针变量,并且这个变量是可以被改变的。
const char*表示一个限定不会被改变的指针变量。
二、模式的不同
char*是常量指针,地址不可以改变,但是指针的值可变。
const char*是指向常量的常量指针,地址与值均不可变。
三、指针指向的内容的不同
char*指针指向的内容是可以改变的,是不固定的。赋值后在数据传递的过程中允许改变。
const char*指针指向的内容是固定的,不可改变的。对传入的参数,不会对指针指向的内容进行修改
四、意义的不同
char* str确保str这个指针不会改变,但是这个指针里面的内容可以改变。
const char* str确保*str的内容不会改变,也就是用str这个指针无法改变str这个指针指向的地址的内容,但是可以改变这个指针
五、特别注意:
看到这么一句话:提到const char*,就认为这个指针指向的是字符串。
根据之前对常量指针和指针常量的理解,const char* p,也就是指针指向的是常量,不能通过指针对数值进行修改。也就是*p=XXX,是错误的用法。
为什么const char*就是针对字符串是用的呢,因为这是一个常量指针,字符串是常量,而且是存储在系统负责管理的常量存储区中的,编译器无权对其进行修改。而且又是char类型的指针,还是一个常量指针,自然就能够与字符串联系在一起。
当指向字符串(常量)时,const char*和char*是没有区别的,但是const char*能更为显示地通过 const 提醒你不能通过指针对常量字符串进行修改,char* 也不能对字符串常量进行修改,但是没有显示的写上const,两者在使用上是一样的。
对于char*, 如果想通过只针对字符串常量进行修改,语法上不会报错,编译也能通过,但是程序运行时将会出现问题。
const char* 和 char* 、字符串常量_小哇123的博客-CSDN博客_const char*
文章详细阐述了char*和constchar*在C++中的差异,包括它们的含义、模式、指针内容和意义。char*是一个可变的常量指针,其指向的内容可变,而constchar*是一个指向常量的指针,内容与地址均不可变。constchar*在处理字符串时特别适用,因为它强调了不可修改字符串的约束。虽然在处理字符串常量时,char*和constchar*在使用上可能没有区别,但constchar*提供了额外的语义提示,防止意外修改。

1595

被折叠的 条评论
为什么被折叠?



