c语言char *s; s=“string” 警告了。但在char前加const就不警告为什么

如题所述

在高版本的编译器中会有警告
其实是这样的
s是个指针变量,"string"是个字符串常量,是不可变的
但是s指针在申明的时候并没有限制其指向的内容不可变,所以编译器担心你不小心改变,所以会给你警告
加入const后说明了s指向的内容是不可变的,所以就没有警告了。
此时s指向位置的内容是不能变的,但是指向的位置是可以变的
温馨提示:内容为网友见解,仅供参考
第1个回答  2015-12-22
代码和编译结果贴出来看看,我的没问题,可能和编译器有关系追问

追答

警告看不清,你写成char *s = "string";试试

追问

一样有警告

追答

警告看不清,你写成char *s = "string";试试,还有就是你这是C程序,但你保存的是.cpp文件,.cpp是C++文件,可能会出问题

本回答被网友采纳

...*s; s=“string” 警告了。但在char前加const就不警告为什么...
加入const后说明了s指向的内容是不可变的,所以就没有警告了。此时s指向位置的内容是不能变的,但是指向的位置是可以变的

...为什么不行 ,但是在chatch中写成 const char* c 为什么就可以了呢...
类型不匹配,你就无法捕获异常。"!!!"的类型是 const char[4],可以隐式转换为const char *,不能隐式转为char *。

关于const char*和string类的问题
const 在char前面,意味着char是个常量,c是指向常量字符的指针,c本身可被赋值,即地址可更改,而c指向的地址中的字符不可以被改变。string类型是标准库中的类,被封装过的,所以对s可以赋值,但是,c_str()函数返回的类型是const char*,防止通过指针修改s内部的字符串,这也是使用类处理字符串的作...

const char*和char*的区别是什么?
在C语言中,const char*和char*是两种不同类型的指针,它们在用途和行为上有着显著的区别。首先,从含义上区分,char*是一个普通的指针,其值可以被改变,表示可以指向内存中的可变数据。而const char*则是常量指针,它限定指针本身不能被修改,但指向的内容可以保持不变,这样可以确保数据的稳定性。在...

C语言的指针相容问题char**和const char**
\/\/char***也会出错,只有char *不出错,结论就是大于等于两重的指针都会出错。这就是编译器实现问题了,编译器就是这么干的,把本来合乎情理的东西弄成错误了,可能是微软出于某种安全性的考虑。但奇怪的是如下代码却是正确的:const char **t;char **a;t = (const char **)a;也就是说强制...

简单C语言问题
2.c:6: 警告:‘main’的返回类型不是‘int’2.c: 在函数‘sort’中:2.c:23: 警告:传递‘strcmp’的第 1 个参数时将整数赋给指针,未作类型转换 \/usr\/include\/string.h:143: 附注:需要类型‘const char *’,但实参的类型为‘char’2.c:23: 警告:传递‘strcmp’的第 2 个参数时将...

为什么c语言要使用const char*而不是char*?
一、含义的不同 char* 表示一个指针变量,并且这个变量是可以被改变的。const char*表示一个限定不会被改变的指针变量。二、模式的不同 char*是常量指针,地址不可以改变,但是指针的值可变。const char*是指向常量的常量指针,地址与值均不可变。三、指针指向的内容的不同 char*指针指向的内容是可以...

c语言中,为什么定义一个char*型的变量会报错。
这是说明类型不兼容,强制转类型。在声明变量 char* 时改成 const char *即可。当用户想在.h声明中定义成员变量,有时会报类型重定义错误,如果不是工程中真的重复定义了多个同名类,那么多半是没有给该类的头文件加条件指示符#ifndef。条件指示符#ifndef 最主要的目的就是防止头文件的重复包含和...

C 语言中char* 和const char*的区别
在C语言中,`char*`和`const char*`之间存在显著的差异。`const char*`的关键特性在于它声明的内容是只读的,即使指针本身可以被重新赋值。例如,以下代码会报错,因为试图修改`const char*` p的第一个元素:const char *p = "123";\/* 这行会报错:试图修改const char*指向的常量内容 *\/ p[1]...

c语言char和const char区别
一旦 赋值 后,const char 型变量的值 就 不允许 更改,不允许再赋新值。而 char 型变量,你可以 随时 更新,愿赋新值 就可以赋新值。但是,实际上,const char 型,只有在 初始化 时 才允许 赋 值。赋 后,不允许 再赋 值。例如: const char cc = 'a';所以 一旦 语句 中 出现 ...

相似回答