程序运行没有问题但有提示,在第20和21行出现[Warning] deprecated conversion from string constant to 'char*' [-Wwrite-strings],不是很理解
#include<stdio.h>
#include<stdlib.h>
int global_uninit_var;
int global_init_var1 = 520;
int global_init_var2 = 880;
void func(void);
void func(void)
{
;
}
int main(void)
{
int local_var1;
int local_var2;
static int static_uninit_var;
static int static_init_var = 456;
const int const_var = 123;
char *str1 = "I love Fish.com!";
char *str2 = "You are right";
int *malloc_var = (int *)malloc(sizeof(int));
printf("addr of func -> %p\n",func);
printf("addr of str1 -> %p\n",str1);
printf("addr of str2 -> %p\n",str2);
printf("addr of global_init_var1 -> %p\n",&global_init_var1);
printf("addr of global_init_var2 -> %p\n",&global_init_var2 );
printf("addr of static_init_var -> %p\n",&static_init_var);
printf("addr of static_uninit_var -> %p\n",&static_uninit_var);
printf("addr of global_uninit_var -> %p\n",&global_uninit_var);
printf("addr of malloc_var -> %p\n",&malloc_var);
printf("addr of local_var1 -> %p\n",&local_var1);
printf("addr of local_var2 -> %p\n",&local_var2);
return 0;
}
C 语言中 字符串字面值的类型是 char*
而 C++ 中是 const char*
你在 那两行 char*
改成const char*
或者 编译选项 设置 -Wno-write-strings
你可以看看这个
【C/C++】C语言工程转C++工程,去除旧代码中的警告和错误_Loup&卡普的博客-CSDN博客
如果有用,麻烦给个采纳
char *str1 = "I love Fish.com!";
char *str2 = "You are right";
这两句定义了两个字符串常量,C++语法要求前面加上 const 修饰符:const char *str1 = "I love Fish.com!"; const char *str2 = "You are right";