operador alignof en C++

En C++11, el operador alignof solía devolver la alineación, en bytes del tipo especificado.
Sintaxis:

alignof(type)

Explicación de sintaxis:

  • alignof: el operador devuelve la alineación en bytes, requerida para instancias de tipo, cuyo tipo es tipo completo, tipo de array o tipo de referencia.
  • tipo de array: se devuelve el requisito de alineación del tipo de elemento.
  • tipo de referencia: el operador devuelve la alineación del tipo referenciado.

Valor devuelto: el operador alignof se usa normalmente para devolver un valor de tipo std::size_t .

Programa:

// C++ program to demonstrate alignof operator
#include <iostream>
using namespace std;
  
struct Geeks {
    int i;
    float f;
    char s;
};
  
struct Empty {
};
  
// driver code
int main()
{
    cout << "Alignment of char: " << alignof(char) << endl;
    cout << "Alignment of pointer: " << alignof(int*) << endl;
    cout << "Alignment of float: " << alignof(float) << endl;
    cout << "Alignment of class Geeks: " << alignof(Geeks) << endl;
    cout << "Alignment of Empty class: " << alignof(Empty) << endl;
  
    return 0;
}
Producción:

Alignment of char: 1
Alignment of pointer: 8
Alignment of float: 4
Alignment of class Geeks: 4
Alignment of Empty class: 1

alignof vs sizeof:
El valor de alignof es el mismo que el valor de sizeof para tipos básicos. Considere, este ejemplo:

typedef struct { int a; double b; } S;  
// alignof(S) == 8  

En el caso anterior, el valor alignof es el requisito de alineación del elemento más grande de la estructura.
Programa de ejemplo para demostrar la diferencia entre alignof y sizeof:

// C++ program to demonstrate
// alignof vs sizeof operator
#include <iostream>
using namespace std;
  
struct Geeks {
    int i;
    float f;
    char s;
};
  
int main()
{
  
    cout << "alignment of Geeks : " << alignof(Geeks) << '\n';
    cout << "sizeof of Geeks : " << sizeof(Geeks) << '\n';
    cout << "alignment of int : " << alignof(int) << '\n';
    cout << "sizeof of int     : " << sizeof(int) << '\n';
}
Producción:

alignment of Geeks : 4
sizeof of Geeks : 12
alignment of int : 4
sizeof of int     : 4

Publicación traducida automáticamente

Artículo escrito por rajasethupathi 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 *