CLKing31 ------------------配列サイズの計算

配列サイズの計算

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

おすすめ

転載: blog.csdn.net/qq_43662480/article/details/114680164