これはおそらく以前に尋ねられた質問のように聞こえるでしょう - Cの配列とポインタの違いについて質問がありますが、どれもこの質問に答えるのに十分な情報を提供していません。C:intの2次元配列をint **に代入すると、CLIONがその行をハイライト表示するのはなぜですか?
私は、C配列の名前がメモリブロックの先頭へのポインタのように扱われていることを知っていますが、intの3 x 3の2次元配列の名前をint **
私が割り当てられたキャストでき
int x[3][3];
int **px = x; <-- warning here
互換性のないポインタ型 'int型* *' と '[3] [3] INT':私のCLION IDEで、それは割り当てを強調して言います値を(int **)にして、ハイライトはもちろん外に出ますが、 - ちょっと - キャストできますCで楽しいものがたくさんあり、ハイライトが消えてしまいます。あなたが求めていることが働くことを意味しているわけではありません。
これは単なるCLION(または、おそらくより適切には、きちんとした整理)の問題ですか、それとも本当の問題ですか?
[編集]
いくつかの文脈では、配列/ポインタの違いの他のすべての答えと問題が理由です、** 3×3アレイは、int型ではないので、それらの多くは、」のようなものを言うということです! "ありがとうございますが、これはかなり無駄な情報です.3x3配列がintではないことを知っている人は既に知っています** - コンパイラは結果のint **を代入後どのように扱うのですか?配列かどうか?
問題の行を投稿できますか? – Blacksilver
2次元配列は、ポインタの配列ではない**です。そのためです。 –
'int **'は 'int *'の連続したリストです。 'int [3] [3]'は、3つのintの3つの連続したリストの連続したリストです。 'int []'は配列の最初の要素のアドレスに解決することによって 'int *'に減衰しますが、それは推移的には動作しません。 – zneak