最近の関数を書いて、そのパラメータとして配列は、この機能で使用される配列の長さは、道を求めているの通常の長さは、間違って行くべきではありません。しかし、調査結果を実行した後に、私が欲しいものではありません。そして、私の推測を検証するためのテストプログラムを書きます。
書式#include <iostreamの> 使用して名前空間はstdを、ボイドソート(INT nSortArray [ 6 ]) { int型 nLen = はsizeof(nSortArray)/ はsizeof(nSortArray [ 0 ])。 int型 NTMP = 0 ; 用(int型 I = 0 ; iがnLenを<Iは++ ) { ための(int型 J = I + 1、J <nLen; J ++ ) { 場合(nSortArray [I]> nSortArray [J]) { NTMP =nSortArray [i]は、 nSortArray [I] = nSortArray [J]。 nSortArray [J] = NTMP。 } } } } int型のmain() { int型 nArray [ 6 ] = { 0、8、3、2、10、9 }。 裁判所未満 << " 排序前...... " << てendl; 以下のために(int型私は= 0私は<; はsizeof(nArray)/sizeof(nArray [ 0 ])。私は++ ) { COUT << nArray [I] << " " 。 } COUT << ENDL。 ソート(nArray)。 裁判所未満 << " 排序后...... " << てendl; 以下のために(int型 iは= 0 ; iは< はsizeof(nArray)/ はsizeof(nArray [ 0 iは++;]) ) { COUT << nArrayを[I] << " " 。 } システム(「一時停止」)。 リターン 0 ; }
コードが見つかったアレイプリントに分類し、前と全く変化後の結果は、ブレークポイントデバッグその長さは1つだけ検索され、次のように
その長さはsizeof(nSortArray)長さおよびsizeof(nSortArray [0])はsizeofは(nSortArray [0])すなわち、それは最初の配列へのポインタに対応する、配列の最初のアドレスの長さであるが、等価です位置の値は、その後の結果は単に配列の最初の位置を指すポインタを使用するように、パラメータとして、自然にnSortArray出てきます。次のようにそのため、正しい言葉遣いは次のようになります。
書式#include <iostreamの> 使用して名前空間はstdを、ボイドソート(INT []、nSortArray 値int nLen)を { int型 NTMP = 0 。 用(int型 iは= 0 ; iがnLenを<Iは++ ) { ため(int型 J = I + 1、J <nLen; J ++ ) { 場合(nSortArray [I]> nSortArray [J]) { NTMP = nSortArray [I]。 nSortArray [I] = nSortArray [J]。 nSortArray [J] = NTMP。 } } } } int型のmain() { int型 nArray [ 6 ] = { 0、8、3、2、10、9 }。 裁判所未満 << " 排序前...... " << てendl; 用(int型 I = 0 ; iが< はsizeof(nArray)/ はsizeof(nArray [ 0 ;])iが++ ) { coutの << nArray [I] << " " ; } COUT << ENDL。 ソート(nArray、はsizeof(nArray)/ はsizeof(nArray [ 0 ])); 裁判所未満 << " 排序后...... " << てendl; 以下のために(int型 iは= 0 ; iは< はsizeof(nArray)/ はsizeof(nArray [ 0 iは++;]) ) { COUT << nArrayを[I] << " " 。 システム(" 一時停止" )。 リターン 0 ; }
コードは、パラメータとして配列ポインタの低下に加えて、他の全ての場合は、配列の正常な長さが得られ、上記から分かります