Diferencia entre sizeof(int *) y sizeof(int) en C/C++

sizeof() es un operador de uso común en C o C++ . Es un operador unario en tiempo de compilación que se puede usar para calcular el tamaño de su operando. El resultado de sizeof() es de tipo integral sin signo que generalmente se denota por size_t . Este operador se puede aplicar a cualquier tipo de datos, incluidos los tipos primitivos , como los tipos enteros y de punto flotante, los tipos de puntero o los tipos de datos compuestos, como la estructura , la unión , etc.

int significa una variable cuyo tipo de datos es entero.
sizeof(int) devuelve el número de bytes utilizados para almacenar un número entero.

int* significa un puntero a una variable cuyo tipo de datos es entero.
sizeof(int*) devuelve el número de bytes utilizados para almacenar un puntero.

Dado que el operador sizeof devuelve el tamaño del tipo de datos o el parámetro que le pasamos. Entonces, el valor que debería devolver después de pasarle una variable de (int *):

  • Dado que int* apunta a una ubicación de dirección ya que es un puntero a una variable, entonces, el tamaño de (int*) simplemente implica el valor de la ubicación de memoria en la máquina, y las ubicaciones de memoria en sí mismas son de 4 bytes a 8 bytes. valores enteros.
  • En una máquina de 32 bits, sizeof(int*) devolverá un valor 4 porque el valor de dirección de la ubicación de la memoria en una máquina de 32 bits es enteros de 4 bytes .
  • De manera similar, en una máquina de 64 bits devolverá un valor de 8 ya que en una máquina de 64 bits la dirección de una ubicación de memoria son números enteros de 8 bytes .

Ahora, el valor que debería devolver después de pasarle una variable de (int):

  • Desde int en una variable de tipo entero. Entonces, el tamaño de (int) simplemente implica el valor del tamaño de un número entero.
  • Ya sea una máquina de 32 bits o una máquina de 64 bits, sizeof(int) siempre devolverá un valor 4 como el tamaño de un número entero.

A continuación se muestra la ilustración del operador sizeof en una máquina de 64 bits :

C

// C program to illustrate the
// sizeof operator
#include <stdio.h>
  
// Driver code
int main()
{
    // Print the sizeof integer
    printf("Size of (int) = %lu"
           " bytes\n",
           sizeof(int));
  
    // Print the size of (int*)
    printf("Size of (int*) = %lu"
           " bytes\n",
           sizeof(int*));
  
    return 0;
}

C++

// C program to illustrate the
// sizeof operator
#include "bits/stdc++.h"
using namespace std;
  
// Driver Code
int main()
{
    // Print the sizeof integer
    cout << "Size of (int) = "
         << sizeof(int) << " bytes\n";
  
    // Print the size of (int*)
    cout << "Size of (int *) = "
         << sizeof(int*) << " bytes\n";
  
    return 0;
}
Producción:

Size of (int) = 4 bytes
Size of (int*) = 8 bytes

Publicación traducida automáticamente

Artículo escrito por shubhamkeshari90 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *