2010-10-20 8 views
7

son punteros de tipo de datos entero o sin signo?¿Cuál es el tipo de datos de puntero en c?

+1

Entero y sin firmar no son mutuamente excluyentes. –

+0

De hecho, solo los tipos integrales pueden ser sin firmar. Ni los tipos de puntero ni los de coma flotante pueden ser sin signo. – MSalters

+0

Marque una de las respuestas como aceptada. –

Respuesta

22

No. Son punteros, cuyo tamaño depende del sistema y cuyo único tipo compatible es void*.

+0

Otro tipo compatible es 'char *'. – MSalters

+9

Los punteros de función no son compatibles con 'void *'. – Secure

+0

Tiene que haber un tipo de entero compatible, aunque uno está definido por la implementación, de modo que puede convertir un puntero de datos a él y viceversa y tener el mismo puntero. –

7

Los punteros son del tipo de puntero. Si está preguntando cómo se representan los valores del puntero en la memoria, eso realmente depende de la plataforma. Pueden ser valores integrales simples (como en un modelo de memoria plana), o pueden ser valores estructurados como un número de página y un desplazamiento (para un modelo segmentado), o pueden ser algo totalmente diferente.

-4

Los punteros a cualquier tipo de datos, ya sea de char/int/float/double/... son enteros sin signo solamente.

Razón: Desde un puntero almacena la dirección, que es una ubicación en la memoria del ordenador, es siempre positiva, no puede ser negativa.

+2

No, los punteros no son "enteros sin signo". Los punteros son punteros. –

+0

¿qué quiere decir con punteros son punteros, podría explicar un poco más sobre esa declaración? lo que quiero decir es que una dirección no puede ser negativa, por lo que debe ser un entero sin signo. – Mahesh

-4

¿Cuál es el tipo de datos de puntero en C? es la única pregunta.

Uno no debe desviarse de la pregunta para dar cualquier tipo de explicación sobre punteros como la respuesta a la pregunta?

Respuesta.

  1. ¿Cuál es el tipo de datos del nombre de un conjunto de intergers en C? El nombre es int, que es el nombre del conjunto que comprende todos los enteros permitidos. Por lo tanto, declaramos int x; donde x puede asumir cualquier valor del conjunto.

  2. De forma similar, ¿cuál es el nombre del conjunto de todas las direcciones o punteros permitidos? .El nombre del conjunto solo puede ser el carácter '*' tal como lo entiendo, aunque no se ve ninguna explicación en ninguna parte de las narraciones del lenguaje C.

Por lo tanto, declaramos la variable del puntero como * x; donde * es el nombre del tipo de datos. De lo contrario, ¿por qué debería pensarse en un tipo de datos de puntero y presentarse bajo el tipo de datos definido por el usuario? Dado que hay todas las celdas RAM, el tipo de datos '*' forma un subconjunto de celdas de memoria permitidas y accesibles. Por lo tanto, este es un nombre de tipo de datos de un conjunto de punteros.

El int es el modificador como en carbon firmado; donde firmado es el modificador en C.Hence podemos tener int * x; para significar que los datos en la ubicación son un entero que es una información necesaria para el compilador.

C habla sobre el tipo de datos del puntero como el tipo de datos del usuario. Quizás es incorrecto considerar el tipo de datos del puntero como el tipo de datos del usuario ya que el usuario no tiene control sobre el conjunto de punteros en el conjunto, pasando por el concepto básico de int es el nombre del conjunto, float es el nombre del conjunto, char es el nombre de serie de los caracteres, el doble es el nombre del conjunto de los números de alta precisión, el color es el nombre del tipo de datos en el color de la enumeración = {azul, rojo, amarillo).

-2

int * p;

tipo de datos de * p es puntero. Y apunta a la variable de tipo entero. Almacena la dirección en formato hexadecimal.

+0

* "Almacena la dirección en formato hexadecimal." * No creo que sea cierto. – Pang

1

En C, el puntero puede acceder a las variables de cualquier tipo de datos. El puntero debe declararse con el tipo de datos de la variable a la que apunta el puntero.Para imprimir la dirección del puntero en formato hexadecimal use %p y para imprimir la dirección en otros formularios use %u. Si el puntero se va a usar para mostrar el valor de la variable de puntería, use *pointer_name y solo para el uso de la dirección pointer_name.

Cuestiones relacionadas