配列サイズの計算
Giantmfc123 2019-03-28 22:51:51 1794コレクション1
カテゴリ列:成長と進行状況
Copyright
データを作成するときに、配列のサイズを計算します
。intarr [5] = {1,2,3、 4,5};
int arrsize = sizeof(arr)/ sizeof(arr [0]);
int arrsize2 = sizeof(arr)/ sizeof(int);
qDebug()<< "before:arrsize =" << arrsize;
qDebug ()<< "before:arrsize2 =" << arrsize2;
1
2
3
4
5
結果を実行した後、サイズは5になります。
2.変更された配列がパラメーターとして関数に渡された後は、この方法でサイズを計算することはできません。
void ArraySize :: print(int * p)
{ qDebug()<< ""; int arrsize = sizeof(p)/ sizeof(p [0]); int arrsize2 = sizeof(p)/ sizeof(int); qDebug()<< "after:arrsize =" << arrsize; qDebug()<< "after:arrsize2 =" << arrsize2; qDebug()<< "* p_size =" << sizeof(p); qDebug()<< "* p [0] _size =" << sizeof(p [0]); for(int i = 0; i <5; i ++) { qDebug()<< "* p [" << i << "] =" << p [i];
転送後、sizeof§のサイズは実際にはポインタのサイズであるためです。32ビットシステムではサイズは4、64ビットシステムではサイズは8です。p[0]はintです。 、サイズは4です。したがって、結果は2になります。実際は5になるはずです。したがって、この方法は間違っています。
3.パラメーターが配列の場合、結果はポインターと同じであり、両方とも間違っています。ポインタと配列は本質的に同じだからです。
void ArraySize :: print2(int p [5])
{ qDebug()<< ""; qDebug()<< "* p_size =" << sizeof(p); qDebug()<< "* p [0] _size =" << sizeof(p [0]); for(int i = 0; i <5; i ++) { qDebug()<< "* p [" << i << "] =" << p [i]; } } 1 2 3 4 5 6 7 8 9 10执行結果后、大小是2、結果是错的
4.配列サイズを関数パラメーターとして使用する場合は、サイズをパラメーターとして渡す必要があります。
void ArraySize :: print3(int * p、int size)
{ qDebug()<< ""; qDebug()<< "size =" << size; qDebug()<< "* p_size =" << sizeof(p); qDebug()<< "* p [0] _size =" << sizeof(p [0]); for(int i = 0; i <5; i ++) { qDebug()<< "* p [" << i << "] =" << p [i]; } } 1 2 3 4 5 6 7 8 9 10 11执行结果。
————————————————
著作権表示:この記事は、CC 4.0BY-SA著作権表示に準拠したCSDNブロガー「giantmfc123」の元の記事です。元のソースリンクを添付してくださいそして、再版のためのこの声明。
元のリンク:https://blog.csdn.net/mafucun1988/article/details/88880534