小小麦兜兜 发表于 2019-9-18 12:59:24

指针数组,和小甲鱼打的一模一样,两种编译器编译不通过

# include <stdio.h>

int main(void)
{
        char *p1 = {
                "第一行",
                "第二行",
                "第三行",
                "第四行",
                "第五行"
        };

        int i;

        for (i = 0; i < 5; i++)
        {
                printf("%s\n", p1);
        }

        return 0;
}

严重性        代码        说明        项目        文件        行        禁止显示状态
错误(活动)        E0144        "const char *" 类型的值不能用于初始化 "char *" 类型的实体        指针数组和数组指针        C:\Users\GIGABYTE\Source\Repos\指针数组和数组指针\源.cpp        10       
错误(活动)        E0144        "const char *" 类型的值不能用于初始化 "char *" 类型的实体        指针数组和数组指针        C:\Users\GIGABYTE\Source\Repos\指针数组和数组指针\源.cpp        6       
错误(活动)        E0144        "const char *" 类型的值不能用于初始化 "char *" 类型的实体        指针数组和数组指针        C:\Users\GIGABYTE\Source\Repos\指针数组和数组指针\源.cpp        7       
错误(活动)        E0144        "const char *" 类型的值不能用于初始化 "char *" 类型的实体        指针数组和数组指针        C:\Users\GIGABYTE\Source\Repos\指针数组和数组指针\源.cpp        8       
错误(活动)        E0144        "const char *" 类型的值不能用于初始化 "char *" 类型的实体        指针数组和数组指针        C:\Users\GIGABYTE\Source\Repos\指针数组和数组指针\源.cpp        9       

VS2019编译不通过,DEV C++编译不通过

superbe 发表于 2019-9-18 14:08:32

提示是 不能用(常量字符串的指针)初始化 (char *字符串的指针),前者的字符串是不可修改的,后者是可以修改的,所以指针类型不同。
我在vs2012上可以正常运行,在Dev-c++上有警告但可以运行。

可以在char *p1前加个const,就是const char *p1。
printf("%s\n", p1);这行里应该是p1吧

小小麦兜兜 发表于 2019-9-18 16:57:01

superbe 发表于 2019-9-18 14:08
提示是 不能用(常量字符串的指针)初始化 (char *字符串的指针),前者的字符串是不可修改的,后者是可以 ...

是p1就是不知道怎么复制过来,就变成这个了
但是在前面加了 const确实正常了,警告都没有了{:5_108:}
页: [1]
查看完整版本: 指针数组,和小甲鱼打的一模一样,两种编译器编译不通过