C_define_const

lenguaje C

1.Define

#include <stdio.h>
#define PI 3.14
void main(){
	int r = 2;
	double area = r * r * PI;
	printf("%f",area);
	getchar();
}

definir una definición de variable, no puede ser modificada
Aquí Insertar imagen Descripción

2.const

#include <stdio.h>
const double PI = 3.14;
void main(){
	int r = 2;
	double area = r * r * PI;
	printf("%f",area);
	getchar();
}

Aquí Insertar imagen Descripción

Const y la diferencia 3.define

Aquí Insertar imagen Descripción
variables const se define no es constante, pero no se le permite cambiar el valor de esta variable es a menudo difieren! Con el tipo. Compilación y tiempo de ejecución de la verificación de tipos presencia función.

es una constante definida no define el tipo de cinta, para simplemente reemplazar caracteres. En el pre-compilación trabajo a tiempo, no existe verificación de tipos.

1, la diferencia
(1) el manejo de diferentes compiladores

# define macros se expanden en la etapa de pre-procesamiento.
constantes const se compilan utilizando la fase operativa.
(2) diferentes tipos y los controles de seguridad

macro #define no es el tipo, no realice ninguna comprobación de tipos, acaba de empezar.
Las constantes const tienen tipos específicos, se presentará en la comprobación de tipos en tiempo de compilación.
(3) de almacenamiento diferente

#define expansión de la macro es simplemente, cuántos lugares, ¿cuántas veces se había iniciado, no se asigna memoria. (Definición Macro no asigna memoria, la memoria asigna definición de la variable.)
Constantes Const serán asignados en la memoria (puede ser un montón también puede ser una pila).
(4) const puede ahorrar espacio y evitar la asignación de memoria innecesario. Por ejemplo:

Constante macro #define NUM 3,14159 //
const doulbe Num = 3,14159; // no es el caso en la ROM Pi ...
El doble de Num = I; Pi // asignar ya no se asigna memoria en este caso!
doble I = NUM; // compilar reemplazo macro, la asignación de memoria
de doble j = Num; // no asignación de memoria
doble J = NUM; // sustitución de macro a continuación, de nuevo asignar memoria!
constantes const definidos desde el punto de vista de conjunto, da solamente una dirección de memoria correspondiente, no es tan inmediata como #define dado, por lo tanto, definir una const constante sólo una copia del programa se está ejecutando (como es el las variables globales de sólo lectura, existe área estática), y una serie de constantes definidas copias # define en la memoria.

(5) mejorar la eficiencia. compiladores normales no son generalmente constante const espacio de almacenamiento asignado, sino que se almacenan en la tabla de símbolos, lo que hace que sea una constante durante la compilación, el almacenamiento y la memoria sin operación, tales leído que su eficacia es también alta.

solamente (6) la sustitución macro para el reemplazo, no cálculo, no una solución de expresión;

Acer reemplaza el tiempo de pre-compilación, tiempo de ejecución, que no asigna memoria.

Ha publicado 198 artículos originales · ganado elogios 17 · vistas 10000 +

Supongo que te gusta

Origin blog.csdn.net/qq_43141726/article/details/104830213
Recomendado
Clasificación