Tipo de datos C ++ (dos)


Un programa en C ++ se puede definir como una colección de objetos que interactúan llamando a los métodos de los demás.

  • El objeto tiene comportamiento y estado.
  • Clase: una colección de objetos con las mismas características, que son abstractos, no reales.
  • Métodos: una clase puede contener varios métodos, puede escribir Logitech en los métodos, manipular datos y realizar acciones. Por lo general, se denomina función en c ++.
  • Incluso variables: cada objeto tiene variables pares únicas, y el estado del objeto es creado por los valores de estas variables pares.

Estructura del programa C ++

#include <iostream> //头文件
using namespace std; //命名空间,std
// main() 是程序开始执行的地方
 
int main()
{
    
    
   cout << "Hello World"; // 输出 Hello World
   return 0; //终止main函数
}

Compilar y ejecutar programas C ++

¿Cómo guardar el código fuente en un archivo?

  • Abra un editor de texto (como txt) y agregue el código anterior
  • Guarde el archivo como hello.cpp
  • Abra la ventana del símbolo del sistema cmd e ingrese el directorio donde se guarda el archivo
  • Ingrese g++ hello.cpp, presione enter, compile el código, generará un .out
  • Entrar a.outpara ejecutar el programa
  • Puede ver que los
    principiantes de Hello World deben comprender este método, que ayuda a comprender el pasado y el presente del programa. Este método básicamente no se utiliza en el desarrollo real.

Bloque de declaración

{
    
    
   cout << "Hello World"; // 输出 Hello World
   return 0;
}

Es un grupo de declaraciones conectadas lógicamente encerradas entre llaves.

Identificador

Es el nombre que se utiliza para identificar variables, funciones, clases, módulos o cualquier otro elemento definido por el usuario, comenzando con una letra o un guión bajo, seguido de un guión bajo o un número
mohd zara abc move_name a_123
myname50 _temp j a23b9 retVal

Palabra clave

Inserte la descripción de la imagen aquí

Trigrama

Un grupo de tres caracteres es una secuencia de tres caracteres que se utiliza para representar a otro carácter, también conocida como secuencia de tres caracteres. Una secuencia de tres caracteres siempre comienza con dos signos de interrogación.

Las secuencias de tres caracteres no son muy comunes, pero el estándar C ++ permite que ciertos caracteres se especifiquen como secuencias de tres caracteres. En el pasado, para representar caracteres que no estaban en el teclado, este era un método esencial.

Las secuencias de tres caracteres pueden aparecer en cualquier lugar, incluidas cadenas, secuencias de caracteres, comentarios e instrucciones de preprocesamiento.

Las secuencias de tres caracteres más comúnmente utilizadas se enumeran a continuación:
Inserte la descripción de la imagen aquí
Si desea dos signos de interrogación consecutivos en el programa fuente y no desea ser reemplazado por el preprocesador, esta situación ocurre en constantes de caracteres, literales de cadena o comentarios de programa. El método es utilizar la concatenación automática de cadenas: "...?" "? .." o secuencia de escape: "... ?? ..".

A partir de Microsoft Visual C ++ 2010, el compilador ya no reemplaza automáticamente los trigramas de forma predeterminada. Si necesita utilizar la sustitución de tres caracteres (por ejemplo, para ser compatible con códigos de software antiguos), debe configurar la opción de línea de comando del compilador / Zc: trigraphs

g ++ todavía admite tres caracteres por defecto, pero dará una advertencia de compilación.

Comentario

  • // Generalmente se usa para comentarios de una sola línea
  • / *. . * / Generalmente se usa para comentarios de varias líneas

tipo de datos

Siete tipos de datos:

  1. Entero int
  2. Flotador tipo punto flotante
  3. Punto flotante doble
  4. Carácter char
  5. Bool
  6. Vacío sin tipo
  7. Tipo de carácter ancho wchar_t
typedef short int wchar_t;

Entonces, el espacio real de wchar_t es el mismo que short int.
java中是八大数据类型:byte short int long float double char boolean
La siguiente tabla muestra la memoria que varios tipos de variables necesitan almacenar en memoria, así como los valores máximos y mínimos que se pueden almacenar en este tipo de variable.
Nota: Los diferentes sistemas serán diferentes, un byte son 8 bits.
Nota: long int es 8 bytes, int es 4 bytes. Los primeros compiladores de C definieron long int para ocupar 4 bytes e int para ocupar 2 bytes. La nueva versión del estándar C / C ++ es compatible con versiones anteriores de este estándar. Una configuración .
Inserte la descripción de la imagen aquí

Variables y constantes

Los estudiantes principiantes definitivamente estarán confundidos y pueden confundirse con los ejemplos inapropiados dados por el maestro. Déjame hablar sobre la definición que les di, y no daré un ejemplo por ahora.

  • Variable: la cantidad que la apariencia no cambia, el valor cambiará
  • Constante: generalmente, es un valor específico y el valor no se puede modificar.

Como por ejemplo: int a; a es una variable. a puede ser igual a 0, 1, 2 ...
Las variables tienen variables globales y variables locales, la diferencia es que en diferentes ubicaciones, las variables globales se inicializarán automáticamente, mientras que las variables locales deben inicializarse manualmente.
C ++ también permite la definición de varios otros tipos de variables, como enumeraciones, punteros, matrices, referencias, estructuras de datos, clases, etc. . .

definir 和 const

Definir es el preprocesador, es decir, la cantidad que no se puede modificar después de la definición global.

#include <iostream>
using namespace std;
 
#define LENGTH 10   
#define WIDTH  5
#define NEWLINE '\n'
 
int main()
{
    
    
   int area;    
   area = LENGTH * WIDTH;
   cout << area;
   cout << NEWLINE;
   return 0;
}

La palabra clave const
declara constantes del tipo especificado 程序中只读不能修改.

const int  LENGTH = 10;
const int  WIDTH  = 5;
const char NEWLINE = '\n';
int area;  

la diferencia

  1. El tipo y la verificación de seguridad son diferentes: la definición de macro (#define) es la sustitución de caracteres, no hay diferencia en el tipo de datos.
  2. El compilador se maneja de manera diferente: la definición de macro es un concepto en tiempo de compilación y const es un concepto en tiempo de ejecución.
  3. El método de almacenamiento es diferente: la definición de macro es reemplazo directo, no se asigna memoria y se almacena en el segmento de código, y const debe asignarse memoria y almacenarse en el segmento de datos del programa.
  4. El dominio de definición es diferente, la definición macro es global y const está dentro de la función.
  5. La definición de macro se puede cancelar con #undef
  6. const se puede pasar como parámetros de función, pero no como definiciones de macros.

La diferencia entre const char *, char const *, char * const

Tipo de modificador

El código largo y corto firmado,
sin firmar, comprende completamente:


#include <iostream>
using namespace std;
/* 
 * 这个程序演示了有符号整数和无符号整数之间的差别
*/
int main()
{
    
    
   short int i;           // 有符号短整数
   short unsigned int j;  // 无符号短整数
   j = 50000;
   
   i = j;
   cout << i << " " << j;
   return 0;
}
//运行结果:-15536 50000

Calificador de tipo

  • const: los objetos de tipo const no se pueden modificar durante la ejecución del programa.
  • volatile: El modificador volátil le dice al compilador que no necesita optimizar las variables declaradas por volatile, para que el programa pueda leer variables directamente desde la memoria. Para los compiladores de variables generales, las variables se optimizarán y los valores de las variables en la memoria se colocarán en registros para acelerar la eficiencia de lectura y escritura.
  • restringir: un puntero modificado por restringir es la única forma de acceder al objeto al que apunta. Solo C99 agrega el nuevo tipo de restricción de calificador.

Clase de almacenamiento

La clase de almacenamiento define el alcance (visibilidad) y el ciclo de vida de las variables / funciones en los programas C ++. Estos especificadores se colocan antes de los tipos que modifican. Las clases de almacenamiento disponibles en los programas C ++ se enumeran a continuación:

auto
register
static
extern
mutable
thread_local (C++11)

A partir de C ++ 17, la palabra clave auto ya no es un especificador de clase de almacenamiento de C ++ y la palabra clave register está obsoleta.

auto

Desde C ++ 11, la palabra clave auto se ha utilizado en dos situaciones: al declarar una variable, infiere automáticamente el tipo de la variable en función de la expresión de inicialización y al declarar una función 返回值的占位符.

La palabra clave auto en el estándar C ++ 98 se usa para la declaración de variables automáticas, pero se ha eliminado en C ++ 11 debido a su uso mínimo y redundancia.
El tipo de variable declarada se infiere automáticamente según la expresión de inicialización, como por ejemplo:

auto f=3.14;      //double
auto s("hello");  //const char*
auto z = new auto(9); // int*
auto x1 = 5, x2 = 5.0, x3='r';//错误,必须是初始化为同一类型

Registrarse

El significado original del registro es definir una variable local almacenada en el registro en lugar de la memoria. Significa que el tamaño máximo de la variable es igual al tamaño del registro (generalmente una palabra) y no puede usar & porque no está en la memoria.
Solo se utiliza para variables que necesitan un acceso rápido, como contadores. Además, después de la modificación del registro, no se almacena necesariamente en el registro, dependiendo del hardware y las limitaciones de implementación.

estático

La clase de almacenamiento estático indica al compilador que mantenga la existencia de variables locales durante el ciclo de vida del programa, sin la necesidad de crear y destruir cada vez que entra y sale del ámbito. Por lo tanto, el uso de estática para modificar variables locales puede mantener el valor de las variables locales entre llamadas a funciones.
El modificador estático también se puede aplicar a variables globales. Cuando static modifica una variable global, el alcance de la variable se limita al archivo en el que se declara.
En C ++, cuando se usa static en un miembro de datos de clase, hará que solo una copia del miembro sea compartida por todos los objetos de la clase.
1). Las variables de miembro estático existen antes que los objetos de
la clase 2). Todos los objetos de esta clase comparten un miembro estático
3). Si el miembro estático es público, entonces puede ser llamado directamente por el nombre de clase
4). Los datos de los miembros se declaran fuera del tiempo de inicialización de la clase
que es el blanco 类变量.

#include <iostream>
 
// 函数声明 
void func(void);
 
static int count = 10; /* 全局变量 */
 
int main()
{
    
    
    while(count--)
    {
    
    
       func();
    }
    return 0;
}
// 函数定义
void func( void )
{
    
    
    static int i = 5; // 局部静态变量
    i++;
    std::cout << "变量 i 为 " << i ;
    std::cout << " , 变量 count 为 " << count << std::endl;
}

Cuando el código anterior se compila y ejecuta, producirá los siguientes resultados:

变量 i 为 6 , 变量 count 为 9
变量 i 为 7 , 变量 count 为 8
变量 i 为 8 , 变量 count 为 7
变量 i 为 9 , 变量 count 为 6
变量 i 为 10 , 变量 count 为 5
变量 i 为 11 , 变量 count 为 4
变量 i 为 12 , 变量 count 为 3
变量 i 为 13 , 变量 count 为 2
变量 i 为 14 , 变量 count 为 1
变量 i 为 15 , 变量 count 为 0

clase de almacenamiento externo

La clase de almacenamiento externo se utiliza para proporcionar una referencia a una variable global, que es visible para todos los archivos de programa. Cuando usa 'externo', para las variables que no se pueden inicializar, el nombre de la variable apuntará a una ubicación de almacenamiento previamente definida.

Cuando tiene varios archivos y define una variable o función global que se puede usar en otros archivos, puede usar extern en otros archivos para obtener una referencia a la variable o función definida. Se puede entender que extern se usa para declarar una variable o función global en otro archivo.

El modificador extern se usa generalmente cuando dos o más archivos comparten la misma variable o función global, como se muestra a continuación:

El primer archivo: main.cpp

#include <iostream>
int count ;
extern void write_extern();
int main()
{
    
    
   count = 5;
   write_extern();
}

El segundo archivo: support.cpp

#include <iostream>
extern int count;
void write_extern(void)
{
    
    
   std::cout << "Count is " << count << std::endl;
}

Aquí, la palabra clave extern en el segundo archivo se usa para declarar el recuento que se ha definido en el primer archivo main.cpp. Ahora, compile estos dos archivos de la siguiente manera:

$ g++ main.cpp support.cpp -o write

Esto producirá el programa ejecutable de escritura, intente ejecutar la escritura, producirá los siguientes resultados:

$ ./write
Count es 5
''

clase de almacenamiento mutable

El especificador mutable solo se aplica a los objetos de la clase, que se explicarán al final de este tutorial. Permite que los miembros de un objeto sustituyan a las constantes. En otras palabras, los miembros mutables se pueden modificar mediante las funciones de miembro const.

clase de almacenamiento thread_local

Solo se puede acceder a una variable declarada con el especificador thread_local en el hilo en el que se creó. Las variables se crean cuando se crea el hilo y se destruyen cuando se destruye el hilo. Cada hilo tiene su propia copia de variables.

El especificador thread_local se puede combinar con static o extern.

Puede usar thread_local solo para declaraciones y definiciones de datos, y thread_local no se puede usar para declaraciones o definiciones de funciones.

A continuación, se muestran las variables que se pueden declarar como thread_local:

thread_local int x;  // 命名空间下的全局变量
class X
{
    
    
    static thread_local std::string s; // 类的static成员变量
};
static thread_local std::string X::s;  // X::s 是需要定义的
 
void foo()
{
    
    
    thread_local std::vector<int> v;  // 本地变量
}

Supongo que te gusta

Origin blog.csdn.net/qq_43600467/article/details/112446410
Recomendado
Clasificación