tamaño de la colección (1)

En el lenguaje C, sizeof() es un operador que determina el tipo de datos o la longitud de una expresión.

Consejos:

El nombre de la matriz generalmente se refiere a la dirección del primer elemento de la matriz, con dos excepciones:

1. sizeof (nombre de la matriz), donde el nombre de la matriz representa la matriz completa y se calcula el tamaño de la matriz completa

2.&Nombre de la matriz, donde el nombre de la matriz representa la matriz completa y se extrae la dirección de la matriz completa

Veamos el siguiente código:

    int a[] = { 1,2,3,4 };
	printf("%d\n", sizeof(a));
	printf("%d\n", sizeof(a+0));
	printf("%d\n", sizeof(*a));
	printf("%d\n", sizeof(a+1));
	printf("%d\n", sizeof(a[1]));
	printf("%d\n", sizeof(&a));
	printf("%d\n", sizeof(*&a));
	printf("%d\n", sizeof(&a+1));
	printf("%d\n", sizeof(&a[0]));
	printf("%d\n", sizeof(&a[0]+1));

Tantos sizeof, ¿cuál es la salida?

primera ola de banderas

Matriz de enteros int a[]={1,2,3,4};

sizeof (a)                a es el tamaño de toda la matriz, el tamaño es 4*4=16 

sizeof (a+0)            a es la dirección del primer elemento, a+0 también es la dirección del primer elemento, el tamaño es 4 u 8

sizeof (*a)                a es la dirección del primer elemento, *a es el primer elemento de la matriz, sizeof(*a) es el primer elemento

                                tamaño, 4

sizeof (a+1)             a es la dirección del primer elemento, a+1 es la dirección del segundo elemento de la matriz, el tamaño es 4 u 8   

sizeof (a[1]))           a[1] calcula el tamaño del segundo elemento, que es 4

sizeof (&a))             &a saca la dirección de la matriz, el tamaño es 4 u 8    

sizeof (*&a))            &a saca la dirección de la matriz, elimina la referencia de la dirección de la matriz a la matriz completa, el tamaño es 16

sizeof (&a+1))          &a saca la dirección de la matriz, +1 salta una matriz hacia atrás, considerada como el lugar después del elemento final

                                dirección, el tamaño es 4 u 8

sizeof (&a[0])          saca la dirección del primer elemento de la matriz, el tamaño es 4 u 8

sizeof (&a[0]+1)      saca la dirección del segundo elemento de la matriz, el tamaño es 4 u 8

Segunda ola de banderas

    char a[] = {'a','b','c','d','e','f'};
	printf("%d\n", sizeof(a));
	printf("%d\n", sizeof(a+0));
	printf("%d\n", sizeof(*a));
	printf("%d\n", sizeof(a[1]));
	printf("%d\n", sizeof(&a));
	printf("%d\n", sizeof(&a+1));
	printf("%d\n", sizeof(&a[0]+1));

   Array de caracteres char a[] = {'a','b','c','d','e','f'};
  sizeof (a) es                el mismo que el anterior, el tamaño es 6


  sizeof (a+0)            a es la dirección del primer elemento, a+0 también es la dirección del primer elemento, el tamaño es 4 u 8


  sizeof (*a)                a es la dirección del primer elemento, *a es el primer elemento, es decir, 'a', el tamaño es 1


  sizeof (a[1])              a[1] es el segundo elemento de la matriz, que es 'a', y su tamaño es 1


  sizeof (&a)                &a obtiene la dirección de toda la matriz, el tamaño es 4 u 8 


  sizeof (&a+1)             &a obtiene la dirección de toda la matriz, +1 significa saltar hacia atrás a una ubicación generada por toda la matriz

                                  Dirección, el tamaño es 4 u 8 
  sizeof (&a[0]+1)        &a[0] representa la dirección del primer elemento, +1 representa la dirección del segundo elemento, tamaño 4 u 8  

La primera parte ha terminado, ¡sí!

Supongo que te gusta

Origin blog.csdn.net/m0_63742310/article/details/123595464
Recomendado
Clasificación