Red de conocimiento informático - Material del sitio web - ¿Cómo hacer la transición del lenguaje C a C?

¿Cómo hacer la transición del lenguaje C a C?

El sujeto de la pregunta usó C para cepillar la hoja de preguntas proporcionada por un funcionario del DO y obtuvo una pequeña comprensión del lenguaje C. ¿Cómo puedo hacer la transición a c de manera eficiente? (La transición aquí no es c con clase)

Recomiendo un libro The C Annotations. La transición del lenguaje C a C se explica en detalle.

No lo entiendo. un poco, aunque C definitivamente no es C con clase, creo que esta transición es buena C -amp;gt; C con Clase -amp;gt;

Además, C nunca puede evitarse. alto rendimiento la mayor parte del tiempo, es bastante difícil deshacerse de C, por lo que siento que no puedo aprenderlo como un lenguaje completamente nuevo como aprender otros idiomas.

El libro "c "primer" es más adecuado.

En comparación con C, hay muy pocas cosas en C...

Se recomienda aprender C desde cero basándose en C

Comience con un nuevo objeto

C agrega algunas características y mecanismos basados ​​en c. Estas características y mecanismos sirven para propósitos orientados a objetos. La programación en lenguaje C está principalmente orientada a procesos.

Si desea cambiar de C a C, debe aprender el pensamiento orientado a objetos y aprender a utilizar métodos C para implementar la programación orientada a objetos. Lo principal es un cambio de mentalidad.

Se puede lograr un cambio en el pensamiento aprendiendo los principios y patrones de diseño orientados a objetos.

El Libro Púrpura de Liu Rujia no contiene contenido cpp. Simplemente estudie la parte anterior de cpp.

Al menos las preguntas sobre el algoritmo son suficientes (susurro)

La transición del lenguaje C a C implica principalmente los siguientes aspectos

Archivos de encabezado y espacios de nombres

El lenguaje C no tiene el concepto de espacio de nombres, pero C sí. El más típico es usar el espacio de nombres std, que se usa a menudo cuando se aprende. Significa usar el espacio de nombres std o usar std::function();, es decir, delante de los nombres de funciones y variables, agregue el nombre del espacio y el solucionador de dominio para usar el espacio de nombres. Los espacios de nombres se pueden anidar.

En aras de la unificación, C reemplazará los archivos de encabezado estándar en formato xxx.h, como stdio.h math.h string.h en lenguaje C, con archivos de encabezado C en formato cxxx, como cstdio cmath. cstring, conservando así las funciones de biblioteca estándar del lenguaje C.

Entrada y salida

La función scanf printf se usa comúnmente en lenguaje C, y C usa el objeto cin cout. El método del lenguaje C es más rápido y el control de formato es más conveniente. El método C puede identificar automáticamente los tipos de entrada y salida y convertirlos automáticamente en cadenas de caracteres apropiadas.

tipo bool

C es un tipo utilizado para determinar verdadero y falso, y su tamaño no se especifica. C también tiene la palabra clave true false.

Por supuesto, el lenguaje C también puede definir y usar verdadero y falso de varias maneras, pero no son palabras clave como C y no son tan confiables como C. Por ejemplo, if(func() == true) es un comportamiento peligroso.

tipo de cadena

La clase del lenguaje C para procesar cadenas de caracteres es obviamente más útil que las matrices de caracteres que requieren atención constante a los caracteres fuera de límites y "". Debido a la existencia del constructor, las variables de tipo char * se pueden construir fácilmente en tipo cadena.

Cuando necesita utilizar una matriz de caracteres, el tipo de cadena también tiene una función c_str correspondiente.

Sin embargo, tenga en cuenta que la función devuelve un puntero constante temporal. Si necesita modificarlo, debe usar strcpy() y otras funciones para hacer una copia y luego operar en la copia.

const

Const en lenguaje C significa que una vez inicializada la variable, solo se puede leer pero no cambiar. Pero eso no significa que el valor sea el mismo cada vez, porque la variable también se puede modificar de otras formas. Al igual que abrir un archivo en modo de solo lectura, no puede modificarlo, pero si otros pueden modificar el archivo, no puede garantizar que el contenido que lea sea el mismo cada vez.

El procesamiento de const en C es más complicado. Si define una var constante con const, se considerará una constante. Incluso si el contenido de la dirección correspondiente se modifica a la fuerza, seguirá recibiendo el error. accediendo a var. Es el contenido antes de la modificación.

Ubicación de la definición de variable

El estándar C89 en lenguaje C estipula que las declaraciones de ejecución en un bloque de código no pueden aparecer antes de las declaraciones de definición de variables. Pero C no tiene esta restricción, siempre que la variable se declare o defina cuando se utiliza.

Gestión de memoria dinámica

El lenguaje C solo puede usar funciones como malloc para abrir una memoria dinámica. Su tamaño debe calcularse y el puntero devuelto debe convertirse. y el contenido debe inicializarse manualmente.

En C, se puede llamar al constructor cuando se solicita memoria de montón y se puede usar el destructor al liberar, lo cual es más conveniente y seguro.

Conversión de tipos

El lenguaje C puede utilizar paréntesis para la conversión de tipos. La más común es la conversión de tipo del puntero devuelto por la función malloc.

La conversión de tipos de C es más clara y estricta. Hay cuatro tipos de const_cast static_castdynamic_cast reinterpret_cast

Y para las clases, puede personalizar la función de conversión de tipos.

Parámetros predeterminados y sobrecarga de funciones

El lenguaje C no admite funciones predeterminadas ni sobrecarga de funciones, y es necesario definir más nombres de funciones.

C admite parámetros predeterminados y sobrecarga de funciones, lo que puede reducir en gran medida la carga de trabajo.

Punteros y referencias

En C, el puntero de una referencia no se puede cambiar, por lo que en muchos casos las referencias de C pueden reemplazar los punteros.

Puntero nulo

El lenguaje C tiene la macro NULL, que se utiliza para marcar punteros nulos.

C tiene la palabra clave nullptr. c no permite la conversión implícita directa de void* a otros tipos. El tipo de nullptr es nullptr_t y se puede convertir implícitamente a cualquier puntero, así que utilice nullptr tanto como sea posible cuando utilice un puntero nulo.

Punteros inteligentes

C ha definido muchos punteros inteligentes bajo diferentes estándares para recuperar automáticamente la memoria dinámica innecesaria, lo cual es más conveniente que los punteros en el lenguaje C.

1. La diferencia entre C y C: el lenguaje C puede ejecutarse perfectamente en el compilador de C, es decir, C pertenece a C. C tiene más bibliotecas de funciones que C. C es programación orientada a objetos (es decir es decir, tiene clases y herramientas relacionadas) 2. Cómo realizar la transición de C a C

2.1 Ejemplo de código: (versión en lenguaje C) uva11000.

#includeamp; { largo largo m = 0, fm = 1 , suma = 1; int n,i; while(scanf("d",n),n != -1){ m = 0, fm = 1, suma = 1; for(i = 0;i amp;lt ; n; i) { fm = m 1; m = suma = m fm } printf("lld lld ", m, suma }

El punto no es resolver lo anterior. Para esta pregunta, concéntrese en el método de escritura. Lo anterior está escrito en lenguaje C. ¿Por qué se dice que está escrito en lenguaje C? Porque el código anterior tiene varias características únicas de C:

Línea 1: #includeamp; Línea 5: scanf("d", n) Línea 13: printf("lld lld ", m , sum);

Estos tres puntos son también las diferencias más básicas entre C y C. Veamos la versión C:

#includeamp; = 0, fm = 1, suma = 1; int n, i; while(cin amp;gt; amp;gt; n, n != -1){ m = 0, fm = 1, suma = 1; i = 0; i amp; n; i ) { fm = m lt; m = m fm; lt; amp; lt; suma amp; amp; lt; endl; }

Línea 1: #includeamp; ;amp;gt;n; Línea 14: cout amp;lt;amp;lt; m amp;lt;amp;lt; " " amp;lt;amp;lt; suma amp;lt;amp;lt ; La primera línea del archivo de encabezado iostream es similar a stdio.h en lenguaje C y se puede comparar y comprender. Usar el espacio de nombres estándar en la línea 2 significa declarar el uso del espacio de nombres estándar. No es necesario que lo comprendas en profundidad, simplemente escribe C y escribe esta línea. (Si quieres saber más, ve a Baidu, es muy simple) Línea 6: El nombre completo de cin es flujo de entrada estándar. Es similar al uso de scanf en lenguaje C, excepto que es más conveniente de usar (en la mayoría de los casos, no es necesario distinguir diferentes tipos y usar diferentes métodos de escritura). Todos los tipos solo necesitan usar cin amp; ; amp; gt; (nombre de la variable) servirá. Línea 14: Similar a cin, cout es el flujo de salida estándar, similar a printf en C, pero no necesita distinguir entre diferentes tipos ni usar diferentes símbolos de salida, sin importar qué tipo, solo use cout amp;lt;amp; lt; (nombre de la variable) servirá. Endl es equivalente al carácter de nueva línea " " en lenguaje C.

2.2 Dominio preliminar de C:

Si ha comprendido las características de las cuatro C anteriores, podrá utilizar C con la misma facilidad con la que escribe código en C. Porque otros métodos de escritura (for, if, else...) son exactamente iguales que C.

3. Cómo aprovechar las ventajas de C (mejora):

Como se mencionó al principio, la diferencia entre C y C radica en la rica biblioteca de funciones de C, la más conveniente de los cuales es STL (un nombre de biblioteca). Muchos libros hablarán sobre esta biblioteca por separado, incluidos algunos contenedores muy convenientes (vectores, mapas). No importa si no lo comprende ahora. La transición de C a C solo lleva una tarde (la base de C es buena), pero se necesita mucho tiempo para aprender a utilizar las diversas funciones de C.

4. Libros recomendados:

Personalmente, utilicé la sexta edición de "C primer plus" para comenzar. Este libro es muy grueso, pero no es necesario que lo lea todo. Puede leerlo como un diccionario (utilizado para leer varias definiciones de funciones). Luego está la mejora. Se recomienda comprar un libro específico sobre STl para dominar STL en profundidad, porque es realmente importante.

Laxantes

Recomiendo a Wang Baoming, el padrino de los hackers. Puedes encontrar cursos específicos en Baidu

Haz más, aprende más, piensa más y encuentra. las reglas, porque ahora también estoy fuera en la etapa de aprendizaje, siento que debería poder tener éxito si sigo así.