Guía de seguimiento dinámico de Solaris

Variables escalares

Las variables escalares se usan para representar objetos de datos individuales de tamaño fijo como, por ejemplo, los enteros y los punteros. Las variables escalares también se pueden usar para objetos de tamaño fijo que estén compuestos por una o varias primitivas o tipos compuestos. D proporciona la posibilidad de crear matrices de objetos, así como estructuras compuestas. DTrace también representa las cadenas como escalares de tamaño fijo y les permite crecer hasta una longitud máxima predefinida. El control de la longitud de las cadenas en un programa escrito en D se trata en profundidad en elCapítulo 6Cadenas.

Las variables escalares se crean automáticamente la primera vez que se asigna un valor a un identificador que previamente estaba sin definir en el programa en D. Por ejemplo, para crear una variable escalar llamada x del tipo int, puede asignarle simplemente un valor del tipo int en cualquier cláusula de sondeo:

BEGIN
{
	x = 123;
}

Las variables escalares creadas de esta manera son variables globales: sus nombres y la ubicación de almacenamiento de los datos se definen una vez y están visible en todas las cláusulas del programa escrito en D. En cualquier momento en que se haga referencia al identificador x, se hará referencia a una única ubicación de almacenamiento asociada a esta variable.

A diferencia de ANSI-C, D no requiere declaraciones con variables explícitas. Si desea declarar una variable global para asignarle nombre y su tipo de forma explícita antes de usarla, puede colocar una declaración fuera de las cláusulas del sondeo en el programa, tal y como se muestra en el siguiente ejemplo. Las declaraciones de variables explícitas no son necesarias en la mayoría de programas escritos en D, pero en ocasiones son útiles cuando se desea controlar cuidadosamente los tipos de variables o cuando usted desee comenzar un programa con un conjunto de declaraciones y comentarios que documenten las variables de los programas y sus significados.

int x; /* declare an integer x for later use */

BEGIN
{
	x = 123;
	...
}

A diferencia de las declaraciones ANSI-C, las de D es posible que no asignen valores iniciales. Debe usar una cláusula de sondeo BEGIN para asignar cualquier valor inicial. Todo el almacenamiento de variables globales lo cumplimenta DTrace con ceros antes de que se haga referencia por primera vez a la variable.

La definición del lenguaje D no establece límites en cuanto al tamaño y el número de variables de D, pero los límites los establece la implementación de DTrace y la memoria que esté disponible en el sistema. El compilador D forzará las limitaciones que se puedan aplicar en el momento de la compilación del programa. Puede obtener más información acerca del ajuste de las opciones relacionadas con los límites del programa en el Capítulo 16Opciones y optimizables.