¿Cuál es la diferencia entre int * p y * p en C?


Respuesta 1:

int * p es la declaración de la variable denominada "p" que almacenará la dirección de otra variable de tipo entero. Es un puntero.

* p denota el valor de la variable cuya dirección está almacenada en p.

Por ej .:

int * p // Declarado una variable para almacenar la dirección de otra variable de tipo entero.

int x = 8; // A una variable de tipo entero se le asigna un valor 8.

p = & x; // La dirección de la ubicación donde se almacena el valor de x se asigna a p;

impresión (p); // Dirección de x donde se almacena 8.

imprimir (* p); // Valor almacenado en esa dirección, es decir, 8

imprimir (x); // Mismo resultado que el anterior.

¿Qué tal int ** p?

Solo piensa.


Respuesta 2:
  • Un puntero es una variable cuyo valor es la dirección de otra variable, es decir, la dirección directa de la ubicación de la memoria. Al igual que cualquier variable o constante, debe declarar un puntero antes de poder usarlo para almacenar cualquier dirección variable. La forma general de una declaración de variable de puntero es:
escriba * var-name; eg.int * p

p.ej:

int * ip; / * puntero a un entero * /
doble * dp; / * puntero a un doble * /
flotador * fp; / * puntero a un flotador * /
char * ch / * puntero a un personaje * /

Mira este programa:

#include 

int main ()
{
   int var = 20; / * declaración de variable real * /
   int * ip; / * declaración de variable de puntero * /

   ip = & var; / * almacenar la dirección de var en la variable de puntero * /

   printf ("Dirección de la variable var:% x \ n", & var);

   / * dirección almacenada en la variable de puntero * /
   printf ("Dirección almacenada en la variable ip:% x \ n", ip);

   / * acceder al valor utilizando el puntero * /
   printf ("Valor de la variable * ip:% d \ n", * ip);

   devuelve 0;
}

* p: * p es un puntero a una variable, como se muestra a continuación. También se llama puntero único. El puntero único tiene dos propósitos: crear una matriz y permitir que una función cambie su contenido (pase por referencia).

Gracias..:)


Respuesta 3:

Estoy considerando dos declaraciones diferentes en C, es decir ...

int * p;

y

*pag;

La primera declaración, es decir, int * p; se llama la declaración de la variable puntero denominada p. En lenguaje C, esta declaración de declaración generalmente aparece antes que cualquier otra declaración de ejecución. Simplemente mencionar esta declaración en lenguaje C solo creará un puntero p, que no apuntará a nada.

Ahora, por ejemplo, considere una variable llamada "var", que he declarado antes de declarar este puntero. Entonces puedo asignar la dirección de var al puntero p como se muestra a continuación.

int var = 43;
int * p = & var;

& Var devolverá la dirección (ubicación de memoria) de la variable var. Esa dirección se asignará a una variable de puntero p.

Ahora, llegando a la siguiente declaración. Más adelante, cuando mencione en cualquier parte del programa * p, significará que nos estamos refiriendo al valor de la variable var.

Es decir, al escribir las declaraciones como:

printf ("% d", p);

imprimirá la "dirección" de la variable var. Y las declaraciones como:

printf ("% d", * p);

imprimirá el valor almacenado dentro de la variable var.

Ahora debe saber cómo cambiar el valor de la variable var, simplemente usando = operador, así:

var = 33;

Puede hacer exactamente lo mismo usando una variable de puntero como esta:

* p = 33; // Válido y cambiará el valor almacenado en la variable var
p = 33; // Declaración no válida, ya que p se refiere actualmente a la dirección de var y no al valor de var.

Supuse en la explicación anterior que usted sabe qué variables de puntero hay en el lenguaje C.