首頁  >  問答  >  主體

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是指向一个有三个元素的数组吗?

天蓬老师天蓬老师2765 天前731

全部回覆(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
  • 取消回覆