Colección de citas famosas - Slogan de motivación - Cómo aprender a programadores en C

Cómo aprender a programadores en C

1. Aprender puntos de conocimiento

①Cadena

1. ¿Qué tipo es el valor de retorno de la función strlen()?

2. ¿El valor de la cadena strlen() es igual al espacio de memoria que ocupa?

3. ¿Conoce los riesgos potenciales de la función strcpy? ¿Cómo evitarlo?

4. Si una cadena no tiene un terminador de cadena y se llama a una función de biblioteca que comienza con str, ¿qué pasará?

5. ¿Cómo funcionan internamente Strcpy(), strcat(), strcmp(), strncpy(), strncat() y strncmp()? ¿Qué hacen exactamente estas funciones con las cadenas de origen y de destino? ¿Has observado los cambios en la memoria de las dos cadenas mientras se ejecutan?

6. ¿A qué debemos prestar atención al utilizar las funciones anteriores?

7. ¿Cuántas operaciones de búsqueda de cadenas conoces?

8. ¿Existe un tipo de datos de cadena en el lenguaje C?

9. Cuando se opera en una cadena, ¿se reserva una ubicación de almacenamiento para el final de la cadena? De lo contrario, es fácil provocar un acceso anormal a la memoria.

2. Arrays

1. Debes saber que al definir "int a[10];", el elemento a[10] no es válido.

2. ¿Conoce varios métodos de inicialización de matrices?

3. Las matrices y los punteros están inextricablemente vinculados pero son diferentes. ¿Ha hecho un resumen detallado de su uso en diferentes situaciones?

4. "int calendar[10][20];", ¿qué tipo de matriz es esta? ¿Tiene 10 elementos de tipo matriz o 20?

5. "int a[10];", ¿cuál es la esencia del nombre de matriz a? ¿Has impreso el valor de a?

6. ¿Cuántos métodos conoces para obtener un elemento de un array?

7. ¿Son iguales los punteros y los arrays? ¿Cuándo son iguales? ¿Cuándo es diferente?

8. Usando punteros y subíndices para acceder a elementos de una matriz, ¿qué método es más rápido?

3. Estructura

1. ¿Sabes qué es una estructura de campo de bits? ¿Cómo definirlo? ¿Cómo usarlo?

2. ¿Conoce el impacto de la alineación de bytes en el espacio de memoria que ocupa una estructura? ¿Cómo calcular el tamaño de memoria que ocupa una estructura?

4. Macros

1. ¿Sabes cuál es la esencia de las macros? ¿función? ¿Declaración? ¿Definición de tipo? ¿O algo más?

2. ¿Sabes por qué los diseñadores de lenguajes diseñan macros? ¿Siguen siendo válidas estas razones hoy en día?

3. ¿Puedes diseñar macros con parámetros?

4. ¿Sabes a qué prestar atención al utilizar parámetros macro?

5. ¿Puedes diseñar macros con parámetros variables?

6. ¿Conoces las desventajas del uso de macros?

7. ¿Tienes una alternativa mejor?

5. Enumeración

1. ¿Es posible especificar el valor de cada elemento de la enumeración?

2. Si no se especifica ningún valor, ¿cuál es el primer valor de la enumeración?

3. ¿Puede el valor de una enumeración ser un número negativo?

4. Al definir la enumeración, ¿definió específicamente los valores mínimo y máximo de la enumeración?

6. switch

1. ¿Cuáles son los tipos de datos de c en switch?

2. ¿Ha agregado declaraciones predeterminadas a todos los conmutadores?

3. ¿Se agregan declaraciones de interrupción a todos los casos (una práctica común)? ¿Qué pasará si no agregas descanso?

7. Estático

1. ¿Cuáles son las tres funciones principales de la estática?

2. ¿Dónde se almacenan las variables locales modificadas por estática? ¿Dónde están las variables globales?

3. ¿Se puede acceder a las variables globales y funciones modificadas por estática en otros archivos? ¿Cómo acceder?

4. ¿Sabías que la estática es una poderosa herramienta para encapsular y ocultar en lenguaje C? ¿Lo usas regularmente?

5. Para variables globales estáticas definidas en diferentes archivos fuente, ¿el compilador permite que los nombres de sus variables sean los mismos? ¿Tienen la misma dirección en la memoria? ¿Qué pasa con las funciones?

8. const

1. ¿Utilizas a menudo const para indicar variables que no se pueden cambiar?

2. ¿Utilizas a menudo constantes constantes en lugar de macros?

3. ¿Sabes qué significa cada una de las siguientes cuatro situaciones?

int i_value= 10

const int* pvalue = i_value

int const *pvalue = i_value

int; * const pvalue=amp; i_value

const int* const pvalue =amp; i_value

4.

9. sizeof

1. Para matrices de caracteres, ¿los valores de strlen y sizeof son iguales?

2. ¿Sizeof es esencialmente una función o una macro?

3. ¿Qué tipo es el valor de retorno de Sizeof?

10. Punteros

1. "int *p;" amp;p, p, *p ¿Qué significan sus valores?

2. ¿Se han inicializado los punteros que definiste?

3. ¿Entiendes el concepto de punteros? ¿Lo usarás?

4. "int *pi_value; pi_value = 0x100000; " ¿Cuál es el valor de pi_value 1?

5. ¿Puedes definir punteros de función?

6. ¿Puedes usar punteros de función para llamar funciones?

7. Para punteros y matrices, consulte la matriz de puntos de conocimiento.

11. Memoria asignada dinámicamente

1. ¿Dónde se almacena la memoria asignada dinámicamente?

2. ¿En qué circunstancias se debe utilizar la asignación dinámica de memoria?

3. La memoria aplicada dinámicamente debe liberarse; de ​​lo contrario, se producirán pérdidas de memoria.

¿Ha utilizado herramientas de prueba de memoria?

12. Funciones

1. ¿Cómo comprobar la dirección de una función en la memoria?

2. ¿Cómo asignar un valor a un puntero de función?

3. ¿Puedes definir una función con parámetros de entrada variables?

4. ¿Puedes distinguir los parámetros formales y reales de una función?

5. ¿Cómo definir el nombre de la función para expresar con precisión el propósito de la función?

6. ¿Utiliza const para modificar parámetros de funciones y devolver valores para expresar significados específicos?

7. ¿Cómo utilizar la recursividad?

13. Variables

1. ¿Dónde se almacenan las variables globales, las variables locales y las constantes en la memoria?

2. ¿Conoce el alcance de los diferentes tipos de variables?

3. ¿Pueden las variables globales y las variables locales tener el mismo nombre? ¿Estás haciendo esto?

4. ¿Son válidas las variables locales después de que sale la función?

5. ¿Por qué no se permite definir variables globales en archivos de encabezado? ¿Cuál es el daño?

14. Conexión (Linux)

1. ¿En qué etapa del proceso de compilación se encuentra el enlace?

2. ¿Cuál es la diferencia entre el uso de bibliotecas de enlaces dinámicos y bibliotecas de enlaces estáticos?

3. ¿Cómo cargar dinámicamente la biblioteca de enlaces dinámicos (cargar la biblioteca de enlaces sin reiniciar el programa)?

4. ¿Cuáles son las ventajas de los enlaces dinámicos?

5. ¿Hay variables globales no estáticas definidas en la biblioteca de enlaces dinámicos? ¿Sabías que este es un movimiento muy peligroso?

6. ¿Pueden las variables globales (no estáticas) y las funciones (no estáticas) de la biblioteca dinámica tener el mismo nombre que las variables y funciones globales de nivel superior? ¿Qué sucede después de que se cambia el nombre?

15. Estructura de datos en tiempo de ejecución (Linux)

1. ¿Sabes cuál es el concepto de segmento?

2. ¿En cuántos segmentos se puede dividir un programa ejecutable? ¿Qué contenido se guarda en cada segmento?

3. ¿Cómo comprobar el tamaño de cada segmento del programa ejecutable?

4. ¿Qué sucede cuando se llama a la función?

5. ¿Has probado alguna vez el espacio máximo de pila de un programa? ¿Qué sucede si el programa excede este tamaño?

6. ¿La pila del sistema que utilizas crece hacia abajo o hacia arriba?

16. Incluir

1. ¿Cómo evitar múltiples inclusiones del mismo archivo de encabezado?

17. Declaración

1. ¿Qué es una declaración y qué es una definición?

2. ¿Usarás las reglas de prioridad declaradas en lenguaje C?

18. Respecto a la complejidad:

1. La principal misión técnica del software es gestionar la complejidad.

2. Una de las características de los buenos programadores es simplificar cosas complejas en lugar de complicar problemas simples. Por lo tanto, generalmente eligen soluciones simples.

3. Las soluciones extremadamente ingeniosas y complejas no tienen otro uso que confundir a los principiantes.

4. Leer el código de excelentes programadores es una especie de placer. Rara vez encuentras resistencia al pensar y puedes disfrutar de la belleza de la simplicidad.