朋友我是c的新手,我正在尝试使用指针数组打印字符串我遵循在线教程中的代码http://www.tutorialspoint.com/.my代码链接是 这是a link! 所有事情都没问题没有错误,当我运行代码消息时显示: [警告]不推荐将字符串常量转换为'char *'[-Wwrite-strings] 没有输出,在线代码是错误的,或者什么是错误可以任何人给我一些想法我的代码如下:
#include <stdio.h>
const int MAX = 4;
int main ()
{
char *names[] = {
"Zara Ali",
"Hina Ali",
"Nuha Ali",
"Sara Ali",
};
int i = 0;
for ( i = 0; i < MAX; i++)
{
printf("Value of names[%d] = %s\n", i, names[i] );
}
return 0;
}
如果我有任何错误,我复制代码,我是c更新,所以我正在学习在线教程,所以请不要给出任何负面评论,如果它也重复,请关闭问题。
答案 0 :(得分:1)
从*
中的*names[i]
移除printf
;
printf("Value of names[%d] = %s\n", i, names[i] );
答案 1 :(得分:0)
[Warning] deprecated conversion from string constant to 'char*'
表示你有字符串文字,它是只读的,但你有一个指向它的指针允许修改。所以编译器会警告你。要消除警告,这应该将name声明为const char的指针数组,如下所示:
const char *names[] = { /*...clipclip... */ };
它只是&#34;只是&#34;一个警告,因为旧代码经常有这样的指针,现在使这个错误会阻止编译。此外,只要您不尝试修改字符串文字,这个问题就没问题了。如果这样做,您应该在任何现代操作系统上在运行时获得分段错误或等效错误。此外,有时您可能希望初始化char*
变量以指向字符串文字,然后在必要时将其更改为指向新的可修改缓冲区,但任何此类用例都应记录注释,并通过以下方式禁用警告:使用显式转换char *s = (char*)"defaultvalue";
。