¿Qué conocimientos básicos necesitas para aprender el lenguaje C?
1. Programa de introducción
#include
int main()
{
printf("¡Hola mundo!");
return 0;
}
2. Tipo de datos
Tipo de datos:
1. Tipos de datos básicos:
1.1. Tipo de entero: int 4 bytes
1.2 Tipo de carácter: char 1 byte
1.3. Tipo real (tipo punto flotante)
1.3.1 Tipo de precisión simple: flotante 4 bytes
1.3.2 Tipo de precisión doble: doble Byte de 8 bytes
2. Tipo de construcción:
2.1. Tipo de enumeración
2.2. Tipo de estructura
2.4. ***Usar tipo de cuerpo
3.Tipo de puntero:
4.Tipo vacío:
3.Declaración de salida formateada
% d: entero decimal;
%c: carácter único;
%s: cadena;
%f: 6 decimales; #include int main() { int edad = 18; altura flotante = 1,85; char unit = 'm'; printf("Xiao Ming tiene %d años este año\n", edad); printf(" Altura de Xiao Ming%f% c\n", altura, unidad); printf("Xiao Ming ahora está estudiando tecnología de TI en MOOC\n"); return 0; } ¡Aprender bien C++ es el trampolín para unirse a una gran empresa! Si hubiera tenido esta lección en aquel entonces, mi C++ no sería así ¿Inválido? Constantes Una cantidad cuyo valor no cambia se convierte en. una constante; Definir constantes de caracteres (tenga en cuenta que no hay;) #include #define POCKETMONEY 10 //Definir constantes y valores constantes int main() { printf("Xiao Ming recibió otro %d yuanes de dinero de bolsillo hoy\n", POCKETMONEY); return 0 ; } 5. Operadores 5.1 Operadores aritméticos: +,-,*,/,%,++,--; /--, operar primero, luego obtener el valor. Luego ++/--, obtener el valor primero, luego operar; 5.2. Operador de asignación: 5.3. ; 5.4. Operadores lógicos; 5.5. Operadores ternarios: Expresión 1 ? Expresión 2 : Expresión 3; 6. Cálculo del número de narciso Genere todos los números de narciso de tres dígitos El llamado "número de narciso" se refiere a un número de tres dígitos cuya suma cúbica es igual al número, como : 153 es un número de narciso, 153=111+555+333. #include int main() { //Definir número de tres dígitos, sd de un solo dígito, td de decenas de dígitos ,centenas dígitos hd int num, sd, td, hd; //Recorre los tres dígitos for( num=100 ; num< 1000 ; num++ ) { //Obtiene el número en las centenas del número de tres dígitos num hd = num/100; //Obtiene el número en el lugar de las decenas del número de tres dígitos num td = num/10%10; //Obtiene el número en las unidades lugar del número de tres dígitos num sd = num%10; //¿Cuáles son las condiciones para el número de narcisos? if(num ==hd*hd*hd+td*td*td+sd*sd*sd ) { printf("Número Narciso : %d\n", num); } } devuelve 0; } 7. Imprime el triángulo equilátero*#include int main() { int i, j, k; for(i=1; i<5; i++) { /* Observe el número de espacios en cada línea y complete la condición del bucle*/< / p> for( j=i ; j<5 ; j++ ) { printf(" "); //Espacios de salida } /* Observe el número de * números en cada línea y complete la condición del bucle*/ for( k=0; k<2*i-1; k++) { printf("*"); //El número * generado en cada línea } printf("\n "); //Nueva línea en cada bucle de tiempo } devuelve 0; } 8. La infame declaración goto Rara vez usado #include int main() { int suma = 0; int i; for(i=1; i<=10; i++) { printf("%d\n", i); if(i==3){ goto LOOP;//Ejecutar la instrucción goto si se cumplen las condiciones } } //Ejecutar goto LOOP:printf("El bucle for termina...."); //Elija la posición adecuada para agregar el identificador. retorna 0; } 9. Parámetros formales Parámetros formales: Los parámetros formales son parámetros utilizados al definir el nombre de la función y cuerpo de la función. El propósito es Se utiliza para recibir los parámetros pasados al llamar a la función; Parámetros reales: los parámetros reales son los parámetros pasados a la función al llamar. Los parámetros formales y los parámetros reales de la función tienen las siguientes características: Los parámetros formales asignan unidades de memoria solo cuando son llamados, y cuando finaliza la llamada, las unidades de memoria asignadas son liberados inmediatamente. Por tanto, los parámetros formales sólo son válidos dentro de la función. Una vez que finaliza la llamada a la función y regresa a la función que llama, la variable de parámetro formal ya no se puede utilizar. Los parámetros reales pueden ser constantes, variables, expresiones, funciones, etc. No importa qué tipo de cantidades sean los parámetros reales, estos deben tener ciertos valores al realizar llamadas a funciones para que estos valores se puede transferir Dar parámetros formales. Por lo tanto, se deben utilizar la asignación y otros métodos de antemano para obtener un cierto valor para los parámetros reales. Al pasar parámetros, los parámetros reales y los parámetros formales deben ser estrictamente consistentes en número, tipo y orden; de lo contrario, se producirá un error de discrepancia de tipos. 10. valores Nota: Puede haber bloques de código de ejecución en la función void, pero no puede haber valores de retorno. Además, si hay una declaración de retorno en la función void, esta declaración solo puede terminar la ejecución de la función. . es: return; 11. Recursion #include int getPeachNumber(int n) //N debe definirse aquí; de lo contrario, el compilador informará un error. ! p> { int num; if(n==10) { devuelve 1 ; p> } else { num = (getPeachNumber(n+1)+1)*2; printf("Quedan %d melocotones el día %d\n", n, num); } return num; } int main() { int num = getPeachNumber(1); printf("El mono picó en el primer día: %d melocotones. \n", num); devuelve 0; } 12. ¡Categoría de almacenamiento variable! 12.1. Método de almacenamiento del ciclo de vida El lenguaje C se divide según el ciclo de vida de las variables, que se pueden dividir en método de almacenamiento estático y método de almacenamiento dinámico Método de almacenamiento estático: se refiere al método de asignación de espacio de almacenamiento fijo durante la operación. El área de almacenamiento estático almacena variables que existen durante la ejecución del programa, como las variables globales. Método de almacenamiento dinámico: se refiere al método. que se utiliza durante la ejecución del programa. Un método para asignar dinámicamente espacio de almacenamiento. Las variables almacenadas en el área de almacenamiento dinámico se crean y liberan de acuerdo con las necesidades de operación del programa y generalmente incluyen: variables formales de función; -protección del sitio y direcciones de retorno durante llamadas a funciones, etc. Clasificación de tipos de almacenamiento Los tipos de almacenamiento en lenguaje C se dividen en cuatro categorías: automático (auto), estático (estático). ), registro (registro) y externo (externo); Las variables definidas con la palabra clave auto son variables automáticas. Auto se puede omitir. Si no se escribe auto, se establece implícitamente en la "categoría de almacenamiento automático". ", que es un método de almacenamiento dinámico. La variable estática modificada es una variable estática. Si se define dentro de la función, se denomina variable local estática; si se define fuera de la función, se denomina variable local estática. se llama variable externa estática. Nota: Las variables locales estáticas pertenecen a la categoría de almacenamiento estático. Las unidades de almacenamiento se asignan en el área de almacenamiento estático y no se liberan durante toda la ejecución del programa. A las variables locales estáticas se les asigna un valor inicial en la compilación. tiempo, es decir, solo se asigna el valor inicial una vez; si no se asigna ningún valor inicial al definir una variable local, a la variable local estática se le asignará automáticamente un valor inicial de 0 (para variables numéricas) o un carácter nulo (para variables de caracteres) durante la compilación Para mejorar la eficiencia, el lenguaje C permite que el valor de las variables locales se coloque en registros en la CPU. Este tipo de variable se denomina "variable de registro" y se declara con. el registro de palabras clave. Nota: Solo las variables automáticas locales y los parámetros formales se pueden utilizar como variables de registro; el número de registros en un sistema informático es limitado y no se puede definir ningún número de variables estáticas locales; como variables de registro. Las variables declaradas con extern son variables externas. El significado de variables externas es que una función puede llamar a variables definidas después de la función. #includ //Cuenta pública de origen: lenguaje C y programación CPP int main() { //Definir variables locales externas extern int x; return 0; } int x=100; p> p> 13. ¡Funciones internas y funciones externas! En lenguaje C, las funciones que no pueden ser llamadas por otros archivos fuente se denominan funciones internas y se definen mediante la palabra clave estática. también se les llama función estática, en la forma: nombre de función estática [tipo de datos] ([parámetro]) La estática aquí es una limitación en el alcance de la función. lo que limita la función a que solo se utilicen funciones internas en el archivo fuente en el que se encuentran, por lo que no hay problema con funciones internas con el mismo nombre de función que aparecen en diferentes archivos. En lenguaje C, las funciones que pueden ser llamadas por otros archivos fuente se denominan funciones externas. Las funciones externas se definen mediante la palabra clave extern en la forma: función externa [tipo de datos]. nombre ([Parámetro]) El lenguaje C estipula que cuando no se especifica el alcance de una función, el sistema utilizará de forma predeterminada una función externa, por lo que extern se puede omitir cuando es necesario definir una función externa. . extern se puede omitir; 14. Matriz de matriz: un espacio de memoria continuo de tamaño fijo con tipos de datos consistentes: nombre de matriz de tipo de datos [longitud n] nombre de matriz de tipo de datos [longitud n] = {Elemento 1, Elemento 2, Elemento 3,...}; Nombre de matriz de tipo de datos[] = {Elemento 1, Elemento 2, Elemento 3,... .}; Nombre de matriz de tipo numérico [longitud n]; Nombre de matriz [0] = elemento 1; Nombre de matriz [1] = elemento 2;... Nota: 1. Matriz Todos los subíndices comienzan con 0. inicializado, el número de elementos en la matriz no puede ser mayor que la longitud de la matriz declarada. 3. Si se utiliza el primer método de inicialización, cuando el número de elementos es menor que la longitud de la matriz, el exceso de matriz Los elementos se inicializan en 0; 4. Cuando la matriz no se inicializa después de declararla, los elementos de inicialización de los elementos de matriz de tipo estático y externo son 0, y el valor de inicialización de los elementos de la matriz de tipo automático es incierto. 15. Recorrido de matriz #include int main() { int arr[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; int i; for(i=0;i<10;i++) { printf("%d\n",arr[i]); } devuelve 0; p> p> } Clasificación de matrices por burbujas La idea de la clasificación por burbujas: comparar elementos adyacentes en pares y colocar los números más grandes en la parte posterior hasta que todos Los números están todos ordenados. Cadenas y matrices En lenguaje C, no hay forma de definir directamente el tipo de datos de la subcadena. Es necesario utilizar una matriz para definir la cadena deseada, de la siguiente forma: nombre de cadena de caracteres [longitud] = "contenido de cadena"; nombre de cadena de caracteres [longitud] = {'String1','String2',... .,' String n','\0'}; Nota: La longitud en [] se puede omitir; Utilice el segundo El último elemento del el primer método debe ser '\0', que indica el final; ¡El segundo método no puede escribir chino! Al generar una cadena, utilice: printf ("%s", nombre de matriz de caracteres) o puts ( nombre de la matriz de caracteres); 16. Función de cadena strlen(s): obtiene la longitud de la cadena s; strcmp(s1, s2): compara al comparar cadenas, las cadenas se convertirán en códigos ASCII y luego se compararán. El resultado devuelto es 0, lo que significa que los valores del código ASCII de s1 y s2 son iguales. el código ASCII de s1 es mayor que el de s2. El resultado devuelto es -1, lo que significa que el código ACSII de s1 es menor que el de s2; strcpy(s1,s2): copia de cadena. ; s2 reemplazará el contenido en s1; strcat(s1, s2) Empalme s2 después de s1; nota: ¡la longitud de s1 debe ser suficiente! atoi(s1) convierte el ¡cadena en un número entero! 17. Matriz multidimensional Nombre de matriz de tipo de datos [expresión constante 1]...[expresión constante n]; La inicialización La inicialización de matrices multidimensionales es similar a la inicialización de matrices unidimensionales y se divide en dos tipos: Nombre de matriz de tipo de datos [expresión constante 1] [expresión constante 2]...[expresión constante n ] = {{valor 1,..,valor n},{valor 1,.. , valor n},...,{valor 1,..,valor n}}; Tipo de datos nombre de la matriz [expresión constante 1][expresión constante 2]...[expresión constante Fórmula n]; nombre de la matriz [subíndice 1][subíndice 2]...[subíndice n] = valor; El Se debe prestar atención a los siguientes aspectos al inicializar matrices multidimensionales: Uso En la primera inicialización, la declaración de matriz debe especificar las dimensiones de las columnas. Debido a que el sistema asignará espacio en función del número total de elementos en la matriz, cuando se conozca el número total de elementos y la dimensión de la columna, la dimensión de la fila se calculará directamente; Cuando usando la segunda matriz de inicialización La declaración debe especificar las dimensiones de fila y columna. 18. Atravesar matrices multidimensionales Usar bucles anidados Nota: ¡El subíndice de cada dimensión de una matriz multidimensional no puede cruzar el límite! 19. Estructura Las matrices C le permiten definir variables que pueden almacenar elementos de datos del mismo tipo. La estructura es otro tipo de datos definido por el usuario disponible en la programación C, que le permite. almacenar diferentes tipos de datos. La estructura se utiliza para representar un registro. Supongamos que desea realizar un seguimiento de la dinámica de los libros en la biblioteca. Es posible que necesite realizar un seguimiento de los siguientes atributos de cada libro: Título<. /p> Autor Asunto ID del libro Definición de la estructura Para definir la estructura es necesario Utilice la declaración de estructura. La declaración de estructura define un nuevo tipo de datos que contiene varios miembros. El formato de la declaración de estructura es el siguiente: etiqueta de estructura { lista de miembros lista de miembros
...
} lista de variables ;
etiqueta es una etiqueta de estructura.
La lista de miembros es una definición de variable estándar, como int i; o float f, u otras definiciones de variables válidas.
La variable de estructura de lista de variables se define al final de la estructura, antes del último punto y coma. Puede especificar una o más variables de estructura. A continuación se explica cómo declarar una estructura de Libro: struct Books
{ char ?title[50]; char ?author[50]; char ?subject[100]; > } libro;
En circunstancias normales, deben aparecer al menos dos de las tres partes etiqueta, lista de miembros y lista de variables. El siguiente es un ejemplo: //Esta declaración declara una estructura con tres miembros, a saber, el entero a, el carácter b y la doble precisión c
//Al mismo tiempo, también declara una variable de estructura s1 p>
//Esta estructura no indica su etiqueta
struct
{
int a;
char b;
double c;
} s1;
//Esta declaración declara una estructura con 3 miembros, cada uno de los cuales es un número entero a, carácter by doble precision c
//La etiqueta de la estructura se llama SIMPLE, no se declaran variables
struct SIMPLE
{
int a ;
char b;
double c;
};
//Usa la etiqueta SIMPLE La estructura también declara las variables t1, t2 , y t3
struct SIMPLE t1, t2[20], *t3;
//También puedes usar typedef para crear nuevos tipos
p>
estructura typedef
{
int a;
char b;
doble c;
} Simple2;
//Ahora puedes usar Simple2 como tipo para declarar nuevas variables de estructura
Simple2 u1, u2[20], *u3;
Accediendo miembros de estructura
Para acceder a los miembros de una estructura, utilizamos el operador de acceso a miembros (.). El operador de acceso a miembros es un punto entre el nombre de la variable de estructura y el miembro de la estructura al que queremos acceder. Puede utilizar la palabra clave struct para definir variables de tipo de estructura.
El siguiente ejemplo demuestra el uso de la estructura: #include
#include
//Cuenta pública de origen: lenguaje C y programación CPP< / p>
estructura Libros
{ char ?título[50]; char ?autor[50]; char ?subject[100];
int main()
{ struct Libros Libro1; /* declara Libro1, el tipo es Libros */ struct Libros Libro2 /* declara Libro2, el tipo es Libros */ /* Libro1; detalles Descripción*/ strcpy( Libro1.título, "Programación en C"); strcpy( Libro1.autor, "Nuha Ali"); strcpy( Libro1.subject, "Tutorial de programación en C"); detalles Descripción*/ strcpy( Libro2.title, "Facturación de telecomunicaciones"); strcpy( Libro2.autor, "Zara Ali"); strcpy( Libro2.subject, "Tutorial de facturación de telecomunicaciones"); Información del Libro1*/ printf( "Título del Libro 1: %s\n", Libro1.título); n ", Libro1.subject); printf( "Libro 1 book_id : %d\n", Libro1.book_id); /* Salida de información del Libro2*/ printf( "Título del Libro 2 : %s\n", Libro2.title) ; printf( "Autor del libro 2: %s\n", Libro2.autor); printf( "Asunto del libro 2: %s\n", Libro2.subject); Book2 .book_id); return 0;
}
¡Aprender bien C++ es el trampolín para unirse a una gran empresa! Si hubiera tenido esta lección en aquel entonces, mi C++ no habría sido así
¿No válido?
20. *El idioma utilizado es un tipo de datos especial que le permite almacenar diferentes tipos de datos en la misma ubicación de memoria. Puede definir un cuerpo de usuario con varios miembros, pero solo un miembro puede tener un valor en cualquier momento. ***Los usuarios proporcionan una forma eficiente de utilizar la misma ubicación de memoria.
#include
#include
datos de unión
{ int i; float char ?str[20] ;
};
int main()
{ union Datos data; printf( "Tamaño de memoria ocupado por datos: %d\n", sizeof( datos)); devuelve 0;
}
21. Puntero #include
int main ()
{ int ?var = 20; ? /* Declaración de variables reales*/ int ?*ip;* Declaración de variables de puntero*/ ip = &var; Dirección de la variable var: %p\n", &var ?); /* Dirección almacenada en la variable puntero*/ printf("Dirección almacenada en la variable ip: %p\n", ip ); /* Valor de acceso usando el puntero* / printf("Valor de *ip variable: %d\n", *ip ; retorno 0;
}
22. Escribir archivo #include
int main()
{ FILE *fp = NULL; ); fprintf(fp, "Esto es una prueba para fprintf...\n"); fputs("Esto es una prueba para fputs...\n", fclose(fp);
); }
Leer archivo #include
int main()
{ FILE *fp = NULL; char buff[255]; fopen("/tmp/test.txt", "r"); fscanf(fp, "%s", buff); printf("1: %s\n", buff ); *)fp); printf("2: %s\n", buff); fgets(buff, 255, (ARCHIVO*)fp); printf("3: %s\n", buff); ;
}
Ruta de aprendizaje de lenguaje C y C++
23 Algoritmos de clasificación
Diez algoritmos de clasificación clásicos (demostración dinámica + código)
24. Algoritmo de búsqueda
Nueve algoritmos de búsqueda
25 Conocimientos de entrevistas
Resumen de conocimientos de entrevistas en lenguaje C y C++
26. Operaciones con cadenas
Resumen completo de operaciones con cadenas
27. Interpretación de bibliotecas estándar de uso común en lenguaje C
Interpretación del lenguaje C comúnmente bibliotecas estándar utilizadas
28. El algoritmo codicioso más utilizado en lenguaje C
El algoritmo codicioso más utilizado en lenguaje C se ha superado de esta manera
29. Errores comunes de memoria del lenguaje C y contramedidas
Errores comunes de memoria del lenguaje C y contramedidas
p>
30. El principio de implementación orientada a objetos en lenguaje C
El principio de implementación orientada a objetos en lenguaje C
31. /p>
Después de leer este artículo, ¿aún no comprendes la gestión de memoria del lenguaje C/C++?
32. Hablemos de punteros en lenguaje C nuevamente
Hablemos de punteros nuevamente: el jefe le aclarará la niebla de los punteros C
Funciones de devolución de llamada de los punteros de función del lenguaje C
Explicación detallada de los punteros del lenguaje C (beneficios al final del artículo)
33. Comandos de preprocesamiento del lenguaje C
Artículo extenso detallado Explicación: Comandos de preprocesamiento en lenguaje C
34. Programación eficiente y optimización de código en lenguaje C
Programación eficiente y optimización de código en lenguaje C
35.
Estructura en lenguaje C ¡Se conquistó así sin más! ¡Vale la pena coleccionarlo!
36. Explicación detallada del código original, código inverso y código complementario
Explicación detallada del código original, código inverso y código complementario
37. definición
Breve introducción al uso de definiciones de macros en lenguaje C
38 Los mejores usos del lenguaje C son la unión, la enumeración y los modos endian grandes y pequeños
El *** del lenguaje C Utilice modos de unión, enumeración, endian grande y pequeño