我對C++課程中的幻燈片感到困惑。 int(* foo)[5]是一個指向5個元素的整數數組的指針,但在示例2中,int(* numbers2)[4]指向一個數組(4個數組)的數組,類型的整數。這兩個人如何擁有相同的左手聲明,但擁有不同的類型?C++中的指針混淆
#include <iostream>
using std::cout;
using std::endl;
int main() {
//Example1
int numbers[5] = { 1,2,3,4,5 };
int(*foo)[5] = &numbers;
int *foo1 = *foo;
//Example2
int numRows = 3;
int(*numbers2)[4] = new int[numRows][4];
delete[] numbers2;
return 0;
}
'numbers2'指向動態數組的第一個元素*。現在'新'表達式工作。 –
想一點...如果你分配一個普通的整數數組,然後'new int [numRows]'返回'int *'。所以當你分配一個數組的數組時,你會得到一個指向數組的指針,或者是'int(*)[4]'(在你的具體情況下)。 –
一個'int *'可以指向一個整數或整數數組的第一個元素的地址。指向數組的指針也是如此。它可以指向單個數組或數組數組的第一個元素的地址。 – Galik