本文主要是介绍常量与指针间的转换 warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings],希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
最近重新学习C语言,在指针数组处遇到了点问题:
代码如下:
#include <stdio.h>
int main()
{char *p[3] = {"how r u ?","i'm fine,thanks.","and u ?"};int i;for(i = 0 ; i < 3 ; i ++){printf("%s\n", p[i]);}return 0;
}
最后可编译,但是显示警告:warning: ISO C++ forbids converting a string constant to ‘char*’ [-Wwrite-strings]
也就是说,字符串常量是不能转化为指针变量的。指针数组中存放的是指针变量,指针变量存放的是右边每一个字符串常量的内存首地址,是指示器。右边则只是字符串常量即字面上“how r u ?"这些。指针即地址和常量有本质性的区别。编译器虽然可以编译,但是会给出警告,表明这是不符合规定的。所以一般建议当const char *类型处理。
修改:添加const,表明p指向的内容为const类型,不能改变。
const char *p[3] = {"how r u ?","i'm fine,thanks.","and u ?"};
修改后正常编译,没有警告。
这篇关于常量与指针间的转换 warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings]的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!