C言語の二次元アレイの種類、および、&[0]、[0] [0]と値の値

問題のいくつかの表現で二次元配列C言語の値と有意


二日には、アレイ、その後、いくつかの深い思考の二次元配列についての質問に来たときにコードを書く前に。私は興味深い質問を考えます。

二次元配列Aに、&、&[0]、及び[0] [0]出力値がない同じことなぜ、それが表すのと同じ意味がありますか?ここに画像を挿入説明

ここで説明すると、&[0]、及び[0] [0]その意味、および全体の二次元アレイのアドレスを示し、&[0]は最初の行の二次元アレイのアドレスを示し、&します[ 0] [0]は2次元配列のアドレスの最初の要素の最初の行を表し、なぜそれらの値は同じですが、意味は、彼らはそれを表現するが、彼は同じではありませんか?

INT char型1の型と、例えば完全に異なっているように、実際にはこれらの値が同一ではない、彼らの価値がちょうど同じであり、それらは、完全に異なるタイプです。
そのタイプの異なる値を説明するために、我々は一例について説明するがかかります。

ここに画像を挿入説明
これらの3つの式の値が、値は同じであるが、それらは計算のために+1した後、得られた値は完全に異なっているが、図から分かります。
我々は、ポインタ値であるこれらの値を置くことができるように、ポインタが値変数のアドレスであることを知っている、と&+ 1、&[ 0] + 1、&[0] [0] +1はポインタとして考えることができますプラスワンの操作。ポインタプラスワン演算規則が、この配列の最初の要素へのintポインタPの指示のような配列があり、ユニット内のポインタ変数のポインタ値を追加することで、ポインタpの値が変数INTの第1のアレイのアドレスであります、P + INT結果は、変数1の二番目の配列のアドレスです。
私たちはいくつかのメモリは、その後達成するために、ポインタに割り当てることができ、かつ2次元配列は、より多くの指し示すポインタよりも、2へのポインタへのポインタであるポインタ2つの方法で達成することができ、知識、1次元配列のmallocを説明しましょう一つの要素。したがって、我々は、配列を理解する方法をポインタすることができます。

Aは、それが2個のポインタとして理解することができる、二次元アレイであり、2&3つのポインタである値へのポインタとして理解することができる、ポインタアドレスです。したがって、上述したタイプのさらなる例&INTの値***、変数INTのタイプを指す**ので、&+ 1次アドレスINT **、全体の二次元配列した後、すなわちアドレスです。

&[0]

同じことが、[0]は、二次元アレイの最初の行であるので、&[0]は、その2つのポインタの値へのポインタであり、いずれかにポインタとして理解することができ、型&[0]の値でありますINT **、変数タイプがそう&[0] +1 INT *次のアドレス、すなわち二次元アレイの第2行のアドレスであり、INT *に呼ばれています。

&[0] [0]

[0] [0] int型の素子であり、&[0] [0]変数を参照すると、*そのポインタのポインタ値であり、&[0] [0]の値がint型であります型はINTであり、&[0] [0] +1次INTアドレス、第2の2次元配列変数のすなわち最初の行アドレスです。

この記事では、すべての読者が指摘歓迎するために、存在する可能性があるいくつかのエラーのため、ここで停止し、この問題を説明します。

リリース元の4件の記事 ウォンの賞賛3 ビュー180

おすすめ

転載: blog.csdn.net/humblehunger/article/details/103549535