我正在使用字符串。
每当我执行以下程序时,我都会收到一个错误,因为不推荐将字符串常量转换为c*中的“char”就行了char *p = "hello"
我究竟做错了什么?
这个错误是什么意思?我该如何纠正它?
我的代码是:
#include<stdio.h>
int main()
{
char *p = "hello";
printf("%s",p+1);
return 0;
}
我正在使用字符串。
每当我执行以下程序时,我都会收到一个错误,因为不推荐将字符串常量转换为c*中的“char”就行了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* 中。为了解决这个问题,要么让它
const char* p = "Hello"
或者char[] p = "Hello"