C++ 为什么程序1在工作而程序2不工作,有人能解释程序2有什么问题吗?

C++ 为什么程序1在工作而程序2不工作,有人能解释程序2有什么问题吗?,c++,C++,程序1运行正常,但程序2出现编译错误,有人能告诉我程序2出了什么问题吗 方案1 #include <iostream> int main() { const char* a[3] = { "one", "two", "three" }; const char*(*p)[3] = &a; for(int i = 0; i < 3; i++) { std::cout << (*p)[i] << std::en

程序1运行正常,但程序2出现编译错误,有人能告诉我程序2出了什么问题吗

方案1

#include <iostream>

int main() {
    const char* a[3] = { "one", "two", "three" };
    const char*(*p)[3] = &a;
    for(int i = 0; i < 3; i++) {
        std::cout << (*p)[i] << std::endl; // this line
    }
    return 0;
}
“一”是
char*
1
int
而不是
int*

因此,计划2必须是:

#include <iostream>
int main() {
    const int a[3] = { 1, 2, 3};
    const int (*p)[3] = &a;
    for(int i = 0; i < 3; i++) {
        std::cout << (*p)[i] << std::endl; // this line
    }
    return 0;
}
#包括
int main(){
常数int a[3]={1,2,3};
常数int(*p)[3]=&a;
对于(int i=0;i<3;i++){

std::cout根据您尝试绘制的类比,
“一”
是一个
char
。但它不是。编译器已经试图告诉您出了什么问题。您理解错误消息有困难吗?错误消息会准确地告诉您发生了什么。
a
是一个
int
指针数组。但是您只为它赋值整数。您正在尝试赋值
int
va是的,我无法理解这个错误message@lurker在第一个程序中,我也在做同样的事情,我给它指定名称('char')。
#include <iostream>
int main() {
    const int a[3] = { 1, 2, 3};
    const int (*p)[3] = &a;
    for(int i = 0; i < 3; i++) {
        std::cout << (*p)[i] << std::endl; // this line
    }
    return 0;
}