検索

ホームページ  >  に質問  >  本文

C++ 数组指针问题

#include<iostream.h>
void main(){
    int n[][3]={10,20,30,40,50,60};
    int (*p)[3];
    p=n;
    cout<<p[0][0]<<","<<*(p[0]+1)<<","<<(*p)[2]<<endl;
}

跪求解答,这么声明的话p是指向一个有三个元素的数组吗?

天蓬老师天蓬老师2803日前760

全員に返信(5)返信します

  • 黄舟

    黄舟2017-04-17 12:08:07

    哥们你这是怎么了 哈哈
    太久没碰这么基础的玩意了
    推荐你一本书 你必须知道的495个C语言问题
    再说你的问题
    int(*p)[3] 中的p是一个指向数组的指针,此数组有3个int类型的元素
    所以p和n可以等

    返事
    0
  • 黄舟

    黄舟2017-04-17 12:08:07

    p的类型应该是int[3]~

    返事
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 12:08:07

    int(*p)[3] 中的p是一个指向数组的指针,此数组一维空间不确定,二维空间是三个元素,所有元素都是int型的,所以用n来赋值给p的。
    在c语言中*p相当于是一个长度不确定的数组。
    所以int(*p )[3]相当于int p[][3]

    返事
    0
  • ringa_lee

    ringa_lee2017-04-17 12:08:07

    p貌似是个长度不限的 int型数组的首地址,然后前6个就是10到60,而后面的则是随机乱码。

    返事
    0
  • PHPz

    PHPz2017-04-17 12:08:07

    噗,难道你学的是谭X强?
    C++主函数的声明从来都没有过这种写法:

    void main()

    只有

    int main()

    int main(int argc, char *argv[])

    然后,关于变量声明的读法,从变量名开始,由(括号)内到外,从右到左:
    int (*p)[3]
    p is a
    pointer to
    array of 3 elements of
    int

    返事
    0
  • キャンセル返事