int* p1;
単なるポインタです。 new []で使用すると、配列やイテレータのようにインクリメントすることができます。それはいいですが、それは何ですかint * [2]はどのような変数ですか? delcarationのようにint * p2 [2]
int* p2[2];
それは2つの要素を持つ配列へのポインタである必要がありますように見えますか?しかし、私が2つの要素の配列を作る場合、私はそれを指すことはできません。とにかくp2を何かにすることはできません。次の多くはちょうどそれの地獄のための別の課題をしようとしているが、実際に私を驚かせたp2 = & arrはうまくいきませんでした。だから、int * [2]とは何か、それはint(*)[2]とどう違うのですか?
int main()
{
int arr[2];
int* p1; //pointer to int, can be used like an array
int* p2[2]; //pointer to an array
p1 = new int[2];
p1 = arr;
//p1 = &arr; //cannot convert ‘int (*)[2]’ to ‘int*’ in assignment
//p2 = &arr; //incompatible types in assignment of ‘int (*)[2]’ to ‘int* [2]’
//p2 = &p1; //incompatible types in assignment of ‘int**’ to ‘int* [2]’
//p2 = new int[2]; //incompatible types in assignment of ‘int*’ to ‘int* [2]’
//p2 = arr; //incompatible types in assignment of ‘int [2]’ to ‘int* [2]’
}
'int * p2 [2];は' int'への2つのポインタの配列です。このような宣言が何であるかわからない場合は、[cdecl.org](http://cdecl.ridiculousfish.com/?q=int*+p2%5B2%5D)を使用してください。 –
もちろんです。当時のちょうど1つ。 – roro
配列へのポインタが必要な場合は、 'int(* p2)[2];'になります。この場合、配列の大きさは重要であることに注意してください。たとえば、 'p2'をインクリメントすると、' int'の配列のサイズだけインクリメントします。 –