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