CLKing31 ------------------ Cálculo del tamaño de la matriz

Cálculo del tamaño de la matriz

giantmfc123 2019-03-28 22:51:51 1794
Columna de categoría Colección 1 : Crecimiento y progreso
Copyright
Cuando creamos un dato, queremos calcular el tamaño de la matriz:
    int arr [5] = {1,2,3, 4,5};
    int arrsize = sizeof (arr) / sizeof (arr [0]);
    int arrsize2 = sizeof (arr) / sizeof (int);
    qDebug () << "antes: arrsize =" << arrsize;
    qDebug () << "before: arrsize2 =" << arrsize2;
1
2
3
4
5 Después de
ejecutar el resultado, el tamaño es 5

2. Una vez que la matriz modificada se pasa a la función como parámetro, el tamaño no se puede calcular de esta manera.

void ArraySize :: print (int * p)
{     qDebug () << "";     int arrsize = sizeof (p) / sizeof (p [0]);     int arrsize2 = tamaño de (p) / tamaño de (int);     qDebug () << "after: arrsize =" << arrsize;     qDebug () << "después: 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];


























Porque después de la transferencia, el tamaño de sizeof§ es en realidad el tamaño del puntero. En un sistema de 32 bits, el tamaño es 4, y en un sistema de 64 bits, el tamaño es 8. p [0] es un int , y el tamaño es 4. Entonces el resultado es 2. Y lo real debería ser 5. Entonces, esta forma es incorrecta.
3. Si el parámetro es una matriz, el resultado es el mismo que el del puntero y ambos son incorrectos. Porque los punteros y las matrices son esencialmente lo mismo.

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. Si desea utilizar el tamaño de la matriz como parámetro de función, debe pasar el tamaño como parámetro.

void ArraySize :: print3 (int * p, int size)
{     qDebug () << "";     qDebug () << "tamaño =" << tamaño;     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执行 结果;




















————————————————
Declaración de derechos de autor: Este artículo es el artículo original del blogger de CSDN "giantmfc123", que sigue al acuerdo de derechos de autor CC 4.0 BY-SA. Adjunte el enlace de la fuente original y esta declaración para reimpresión.
Enlace original: https://blog.csdn.net/mafucun1988/article/details/88880534

Supongo que te gusta

Origin blog.csdn.net/qq_43662480/article/details/114680164
Recomendado
Clasificación