La experiencia de programación Gran Dios: "La esencia y el puntero del lenguaje C"!

       Muchos lenguajes de programación tienen " ningún puntero " para promover su ventaja, sin embargo, para el lenguaje C, el puntero se nacido.

01,

Por lo tanto, lo que es un puntero? ¿Por qué todos queremos evitar puntero?

       Muy simple, el puntero es la dirección, cuando hay una dirección como una variable, se denomina un tipo de puntero de la variable, por lo que, naturalmente, se trata de un tipo de puntero.

       la acción del puntero es, dado un puntero, el puntero al valor tomado en la dirección. Con el fin de comprender la naturaleza, empezamos con un modelo de computadora.

       Vista de la macro, el ordenador se puede dividir en dos categorías:

☄ de almacenamiento - la ejecución de un ordenador. Ejemplos típicos de tales máquinas es la computadora que suelen utilizar, una CPU, una memoria, CPU comprende una lógica aritmética solamente, todas las instrucciones y datos en la memoria, sólo el almacenamiento de la memoria, el cálculo no contiene ningún componente.

☄ equipo de programación sitio. Ejemplos típicos de tales máquinas es un circuito ASIC, FPGA esto. Los circuitos lógicos construidos directamente para necesidades específicas, sin embargo, debido a problemas con el producto cartesiano, no es adecuado para la computación de propósito general.

       Buscamos tienda que suelen utilizar - el modo de equipo de implementación del modelo:

☀  la CPU para transmitir una dirección de memoria en el bus de direcciones.

☀  dirección de memoria correspondiente a los datos de devolución específico del bus de datos.

       Parece que la computadora de propósito general es completar todo el trabajo por el puntero. CPU no tiene la capacidad de manipular directamente el valor de la memoria, debe realizar las siguientes operaciones de desvío:

§   tomada de un valor de dirección específica V0 A0.

§   para generar un proceso aritmético V0 V1.

§   V1 se almacena en una dirección específica A1.

       Inicialmente, es de acuerdo con la lógica anterior del programa de un tal, que es el lenguaje ensamblador:

       Sin embargo, esto es demasiado problema, el lenguaje C con un simple sistema operativo UNIX genérico nació, la siguiente declaración parece ser más conveniente:

       C lenguaje trabajos directamente asigna la CPU, y es una manera extremadamente simple, que es el arte del lenguaje C.

       Este es el puntero del fondo C. En aquellos días, la gente no quería el equipo para ayudar a completar la lógica de negocio más complejos, la gente sólo quiere utilizar de una manera más sencilla para abstraer el comportamiento de la computadora, la cristalización final es el lenguaje C.

       Así que dijimos, la esencia es el puntero del lenguaje C, los punteros son todo lenguaje C . No podemos if-else lenguaje, no podemos cambiar sentencia CASE, podemos hacer mientras, hacemos no para, pero hay que tener un puntero.

       Sí, podemos afirmar matriz mediante una función en lugar de un puntero o similar, si-else:

Utilizamos estado de la matriz eludido con éxito si-else ...

Podemos ver, todavía con puntero.

02,

Un puntero se almacena - equipo de trabajo las condiciones necesarias para la aplicación del modelo!

       Nos fijamos en la tienda - cómo un modelo informático de ejecución:

  determinada dirección, la CPU puede obtener los datos de la dirección.

  determinada dirección, la CPU puede escribir en el valor de la dirección.

¿Qué significa esto?

       ¿Quieres el trabajo, siempre y cuando la CPU, es necesario exponer todo el espacio de direcciones de memoria para la CPU, de lo contrario la CPU es un montón de puerta inútil, en otras palabras,  todos de memoria! la memoria de funcionamiento está obligado a utilizar el puntero!

03,

De hecho, el lenguaje C es una versión simplificada del lenguaje ensamblador. Por último, la compilación lenguaje C puntero del relé creó el mundo.

       De todos modos, el lenguaje C es un lenguaje de programación orientado a la computadora , en lugar de negocio orientado al lenguaje de programación, que mapea la forma en que funcionan los ordenadores y no muy buenos para describir la lógica de negocio, por lo tanto, el lenguaje C por los piratas informáticos, programación informática tales artesanos amantes de su propio favorito, pero que no tenga los programadores de negocio para ser visto como jugar con el puntero no demasiado engorroso y complejo, y creen que va a ir mal.

       Almacenamiento - realizar problema es que el modelo, para diseñar mecanismo de banda de complejo para evitar cualquier acceso a la memoria, el complejo resultante es un segmento, de paginación, de control de acceso, y así el mecanismo de MMU, por supuesto, dependerá de esos mecanismos y puntero acceso de la CPU trabajo de la memoria no entre en conflicto.

       El puntero del lenguaje C utiliza más definitivamente debe ser la lista incrustado Linux kernel enlazada de list_head estructura de:

       Puede ser todo, se trata de una interpretación perfecta del puntero por C OOD, list_head es la clase base para el mundo!

       Por macro container_of, list_head se puede convertir a cualquier objeto:

       La dependencia de la detrás de la conversión, es un puntero:

       Sin embargo, la programación en lenguaje C sigue siendo hostil a los negocios, dijo anteriormente, es el lenguaje C propio equipo de trabajo de mapeo, si se quiere hacer un buen uso del lenguaje C, es necesario entender la teoría de la computación , esto no es un platos programador de negocios, procedimientos operativos Sólo los miembros de lógica de negocios de escritura, no le importa cómo funciona el equipo.

       Estos servicios no pueden decir no hay punteros de lenguaje de programación, pero ocultarlo puntero, que están expuestos al programador una interfaz más de negocios, la programación y la sintaxis, su propio puntero en los problemas de procesamiento subyacentes, nada más. Puntero es una realidad objetiva, siempre y cuando se está utilizando el almacenamiento - Modelo de ejecución de ordenador, el puntero es todo.

       Para los amantes de la programación, hay un grupo de socios pequeños juntos para aprender es muy importante! Si usted está interesado o en la necesidad, entonces tenemos una base cero de programación introductoria clubes de intercambio de aprendizaje , así como el aprendizaje de archivos de vídeo, somos principiantes de bienvenida y avanzada en pequeños amigos!

- FINAL -

Publicados 520 artículos originales · ganado elogios 132 · Vistas a 80000 +

Supongo que te gusta

Origin blog.csdn.net/HUYA69/article/details/105142346
Recomendado
Clasificación