c lenguaje puntero del análisis preliminar

1.c tipo de lenguaje tres tipos:
(1) tipo incorporado: char, short, int, double, etc.
(2) Tipo de medida: struct, union (clase C ++) y similares
(3) tipo de puntero: int *, char *, * flotador, etc.
Ya sea incorporado en el tipo o de un tipo definido un tipo de puntero tiene un correspondiente
primero en examinar los tipos de datos básicos y los tipos básicos de puntero

2. Los datos básicos y la cantidad de problema puntero espacio
(1) ejecutar en el siguiente vc código:
el printf ( "% D \ n-", el sizeof (char));
el printf ( "% D \ n-", el sizeof (Short ));
el printf ( "% D \ n-", el sizeof (int));
el printf ( "% D \ n-", el sizeof (un flotador));
el printf ( "% D \ n-", el sizeof (doble));    

La salida del entorno Windows de 32 bits:
. 1
2
. 4
. 4
. 8

(2) para comprender primero el significado del medio ambiente de 32 bits:
32 bits hardware (procesador 32), el sistema operativo es de 32 bits, 32 bits C compilador
para que entorno diferente los resultados pueden variar, sizeof () de los tipos de datos básicos se determinan de acuerdo con el proceso anterior
(3) la diferencia entre el puntero y el tipo de tipos básicos:
el printf ( "% D \ n-", el sizeof (char *));
el printf ( "% D \ n-", el sizeof (Short *));                            
el printf ( "% D \ n-", el sizeof (int *));
el printf ( "% D \ n-", el sizeof (un flotador *));
el printf ( " % d \ n", sizeof ( doble *));

La salida es:
4
4
4
4
4
encontró que no importa qué tipo de puntero, que determinan el tipo de tamaño sizeof es 4,
los principiantes se sentirá muy extraño, vamos a ver cuáles son las razones:
un indicador es también una variable, por lo que llamamos una variable de puntero de datos de puntero definido, la variable es un valor de puntero, este valor se expresa típicamente en la memoria hexadecimal, por ejemplo 0x0019ff3c, que ocho hexadecimal de 16, por lo que cuatro bytes de tamaño, sizeof un puntero es de 4 bytes de tamaño se

3. explorar más el puntero
(1) la relación entre el puntero y la variable
int A = 10;
int = 20 es B;
int * P = NULL;
int ** S = NULL;
P = & A;
S = & P;

p = 100 *;
* S = & b;
esto define un puntero y un puntero a un puntero p s, de modo que se inicializan a puntero NULL (que es una estrategia para la seguridad).
Entonces p = & a la representación de los puntos de puntero P a una variable, con la condición de que deben ser de tipo int * p, por lo que puede apuntar a una variable de tipo int a.
s = s & p representa un puntero que apunta a un (puntero) las variables p, por lo que * s, debe ser un tipo int * Tipo, se puede apuntar a escribir * int (puntero) variable p

(2) los determinantes de tipo puntero
a partir de lo anterior, sabemos que un puntero puede apuntar a un tipo de variable debe ser el mismo entre ellos.
problema de valor (3) punteros
un puntero tiene tres valores y sus asociados:
P: P = el valor del puntero P después de una y almacena una dirección, el funcionamiento de p es igual a la operación de dirección en una, así que p cambiado también se va a cambiar.
P = & realiza después de la operación de una, un valor de p igual a la dirección de, por ejemplo 0x0019ff2c, * p = a, su valor 10
* p: p * = 100 es bastante dentro del significado de la variable p (es decir, a) re-asignación, mencionado anteriormente, también será un cambio (p = & a), por lo que * p = a = 100 (precedido por * p = a = 10).
& P: s = & p s puntero nombre almacenar un puntero de dirección p, p empatía s corresponde a la operación de la dirección, es decir, el valor de s * Valor de p (en este caso a = 10, ** s = 10 ) .
* S = & b, en esencia, el puntero de p al punto B, este tiempo es equivalente a p = & b, que es el punto de cambio de p, esta vez ** S = * p = b = 20, un valor constante porque no tiene sentido ya que a p a.
Del mismo modo disponible int *** q (punto a un puntero a un puntero, triple) puede señalar a int ** s, es decir, q = & s, la operación descrita anteriormente, el caso de s = & P, pero si el puntero es un puntero varias etapas , sólo podemos variables de puntero (por ejemplo, q) operación.

(4) sustancial puntero de
la naturaleza de la variable puntero es un puntero de dirección de almacenamiento de datos también debe tener un tipo, un puntero es un tipo de tipo de variable se refiere.
La esencia de un tipo de la variable predeterminada se encuentra en la memoria para un tamaño de byte variable y la representación en la memoria. Esto determina la importancia del tipo de puntero.
Dado que el puntero de dirección variable se almacena, por lo que al cambiar el valor de los puntos de puntero a, que es equivalente a cambiar la variable indirecta.
Valor del puntero es siempre una dirección de memoria, un puntero al cambio, es decir, a la reasignación al puntero, y esta vez la variable original del puntero señaló que no importa.
Dado un valor variable de puntero (valor de la memoria) y un tipo de su teoría para controlar cualquiera de la zona de memoria de datos (en el caso de OS permitido).

detalles 4.const y punteros utilizado
int A = 10;
int = 20 es B;

int * = & el p-const A; // int const * la p-
* la p- = 20; // error
p = & a; // correcto
int * const p = & a; // const * izquierda o derecha en el
int const * const p = & a;
* P = 20 es;
P = & B;
el printf ( "% D \ n-", * P);
(. 1) int const * P (int const * P) comúnmente referido como un puntero constante (constante de puntero) * valor const de p, p * está bloqueado correspondiente a sólo lectura (de sólo lectura),
esta vez el valor de p * no se puede cambiar, pero puede cambiar el punto de p (p = & b). Sin embargo, el valor de modificación a (p puntas objeto), se cambia * p, puntero constante sólo afectan, no afecta a la variable es puntiagudo.
(2) int * const p denomina constante de puntero (y las variables de puntero correspondientes), esta vez para p en sí es bloqueado const, p es de sólo lectura, no puede cambiar el valor del puntero de p (el valor de dirección),
este tiempo puede variar * p valor apuntado a modificar indirectamente el valor de la variable, pero no puede cambiar el punto p. Al igual que en el puntero P y la dirección de una variable ligada.
(3) const int * const p (const int const * p) por lo general se denomina constante de puntero constante (constante de puntero que apunta a una constante), teniendo en cuenta lo anterior dos propiedades.
Ni modificado el puntero de p, p * no puede ser cambiado por el valor del referente. Comparar aparentemente en vano.
En la práctica, si sólo tenemos el valor de esta variable, sin la necesidad de modificar el funcionamiento, esto puede proteger la seguridad de nuestro código, a fin de evitar la modificación del valor de retorno de la función de referencia.
(4) el uso general de ellos, si debemos tener una variable const se determina en función de si el puntero apunta a la necesidad de const

Publicó un artículo original · ganado elogios 0 · Vistas 25

Supongo que te gusta

Origin blog.csdn.net/qq_37291326/article/details/105098132
Recomendado
Clasificación