我正在使用字符串。已弃用将字符串常量转换为'char *'的c
每当我执行下面的程序我在C *上线char *p = "hello"
得到一个错误的弃用转换从字符串常量“字符”我在做什么错?
这个错误是什么意思?我该如何纠正它?
我的代码是:
#include<stdio.h>
int main()
{
char *p = "hello";
printf("%s",p+1);
return 0;
}
我正在使用字符串。已弃用将字符串常量转换为'char *'的c
每当我执行下面的程序我在C *上线char *p = "hello"
得到一个错误的弃用转换从字符串常量“字符”我在做什么错?
这个错误是什么意思?我该如何纠正它?
我的代码是:
#include<stdio.h>
int main()
{
char *p = "hello";
printf("%s",p+1);
return 0;
}
这应该是一个警告(虽然你可能已经设置你的编译器警告视为错误,这往往是一个好主意)。
你想要的是:char const *p = "hello";
改为。
试图修改字符串文字会导致未定义的行为。 const
可防止您无意中这样做(即,除非您删除const
限定符,例如通过强制转换,否则试图通过指针写入的代码将不会编译。
这是一个警告,因为“Hello”字符串是一个常量,您试图将其存储在非常量字符*中。上悬而未决的问题要么使之
const char* p = "Hello"
或char[] p = "Hello"
不是'const char * p',而是'char const * p'一些组合可能会让你为'const char *'着想'' –
@GrijeshChauhan:一个编译器*可能*会为几乎任何(或没有)原因产生一个警告,但是我对于在类型之前放置'const'而不是after之后至少有一点惊讶。该标准要求/两者都要被接受。 –
@GrijeshChauhan你可以指定哪个编译器。因为const char和char const都是一样的我认为 – Daemon
没有错误,但可能是警告......因为字符串文字'字符常量*'类型 –
为const char * p =“你好” –
@ user2227862还阅读这个:http://en.wikipedia.org/wiki/Const-correctness –