¿Qué conocimientos básicos necesitas para aprender el lenguaje C?
# include ltstdio.h gt
int main()
{
printf("¡Hola mundo!" );
Devuelve 0;
}
2. Tipo de datos
Tipo de datos:
1. Tipos de datos básicos:
1.1. Entero: int 4 bytes.
1.2. Tipo de carácter: char 1 byte.
1.3. Tipo de número real (tipo coma flotante)
1.3.1. Tipo de precisión simple: coma flotante 4 bytes.
1.3.2.Doble: Doble 8 bytes.
2. Tipo de estructura:
2.1. Tipo de enumeración
2.2. p>2.4.***Tipo de usuario
3. Tipo de puntero:
4. Tipo vacío:
3. Declaración de formato de impresión
d: entero decimal;
c: carácter único;
s: cadena;
f: 6 decimales; # incluir ltstdio.h gt
int main()
{
int edad = 18;
Altura de flotación = 1,85;
unidad char ='m';
Printf ("Xiao Ming tiene d años este año\n", edad);
Printf ("Xiao Ming's height fc \n", height, unit);
Printf ("Xiao Ming está aprendiendo tecnología de TI en línea en un curso en línea abierto y masivo\n");
Return 0;
}
¡Aprender bien C es un trampolín para unirse a una gran empresa! Si tuviera esta clase, mi C no sería así.
¿Caducado?
4. Constante
Una cantidad cuyo valor no cambia se convierte en una constante;
Defina una constante de carácter (tenga en cuenta que no hay contenido siguiente;)
# include ltstdio.h gt
#define POCKETMONEY 10 //Definir constantes y valores constantes.
int main()
{
Printf ("Xiao Ming volvió a recibir d dinero de bolsillo hoy\n", dinero de bolsillo
<); p>Devuelve 0;}
5. Operador
5.1 Operadores aritméticos: , -, *, /,, -; , haga el cálculo primero y luego obtenga el valor. /-Después de eso, primero obtiene el valor y luego realiza la operación;
5.2. Operador de asignación:
5.3. Operador relacional;
5.4. ;
5.5. Operadores de terceros:
Emoji 1? Expresión 2: Expresión 3;
6. Cálculo del número de narcisos
Muestre todos los números de narcisos de tres dígitos.
El llamado “número de narciso” hace referencia a un número de tres cifras, la suma de los cubos de sus cifras es igual a este número. Por ejemplo, 153 es el número de los narcisos y 111 555 333.
# include ltstdio.h gt
int main()
{
//Definir número de tres dígitos, un dígito sd, decenas td y centenas hd.
int num, sd, td, HD;
//Recorre los tres dígitos
for (num = 100; num lt1000; num) p>
p>
{
//Obtener el centésimo dígito del número de tres dígitos
HD = num/100;
//Obtiene el número de tres dígitos num El décimo dígito del dígito num.
TD = num/10 10;
//Obtener el número en el dígito num del número de tres dígitos
SD = num 10; p>
//¿Cuáles son las condiciones para la cantidad de narcisos?
if (num == HD * HD * HD TD * TD * TD SD * SD * SD)
{
Printf("Número de narciso: d \n",num);
}
}
Devuelve 0;
}
7 . Imprimir triángulo regular*
# include ltstdio.h gt
int main()
{
int i, j, k ;
for (I = 1; i lt5; i)
{
/*Observe el número de espacios en cada línea y complete la condición del bucle*/ p>
for (j = I; j lt5; j )
{
printf (""); //Espacios de salida
}
/*Observe el número de * en cada fila y complete la condición del bucle*/
for (k = 0; k lt2 * I-1; k )
{
printf ("*"); //El número * generado en cada línea
}
printf ("\n") ; //Cada vez todos los saltos de línea en el bucle
}
Devuelve 0;
}
8.
Rara vez usado
# include ltstdio.h gt
int main()
{
int suma = 0;
int I;
for (I = 1; i lt=10; i)
{
printf( " d\n ", I);
if (I == 3) {
goto loop; //Ejecuta la instrucción goto cuando se cumple la condición.
}
}
//Ejecutar goto
LOOP: printf ("El bucle For termina..."); Seleccione la ubicación adecuada para agregar el identificador.
Devuelve 0;
}
9. Participación formal de los parámetros reales
Parámetros formales: los parámetros formales definen el nombre de la función y la función. cuerpo Los parámetros utilizados al llamar a una función se utilizan para recibir parámetros entrantes al llamar a una función;
Argumento: el argumento es el parámetro de la función pasada al llamar.
Los parámetros formales y los parámetros reales de una función tienen las siguientes características:
Los parámetros solo asignan unidades de memoria cuando son llamados y liberan las unidades de memoria asignadas al final de la función. llamar. 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 tónica, las variables de parámetros ya no se pueden usar.
Los parámetros pueden ser constantes, variables, expresiones, funciones, etc. Sean lo que sean, deben tener valores definidos al realizar una llamada a una función para poder pasar estos valores a los parámetros formales. Por lo tanto, debemos utilizar métodos como la asignación para obtener de antemano los valores determinados de 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. Comentarios sobre los valores de retorno de las funciones
Nota: las funciones nulas pueden tener bloques de código de ejecución, pero no pueden tener valores de retorno. Además, si hay una declaración de retorno en la función nula, la función solo se puede finalizar. El formato es: return;
11. Recursion
# include ltstdio.h gt
int getPeachNumber (int n) //Defina n aquí; de lo contrario, The ¡El compilador informará un error!
{
int num
Si (n==10)
{
Devuelve 1;
}
Otros
{
num = (getPeachNumber (n 1) 1) * 2
Printf ("Quedan d melocotones el día d", n, num
}
Devolver número
}
int main()
{
int num = getPeachNumber(1);
Printf("El mono recogió d melocotones el primer día.\ n ", num);
Devuelve 0;
}
12. ¡Clase de almacenamiento variable!
12.1. Modo de almacenamiento dividido del ciclo de vida
Según el ciclo de vida de las variables, el lenguaje C se puede dividir en almacenamiento estático y almacenamiento dinámico.
Modo de almacenamiento estático: se refiere al modo que asigna espacio de almacenamiento fijo cuando el programa se está ejecutando. El área de almacenamiento estático almacena variables que existen durante la ejecución del programa, como las variables globales.
Modo de almacenamiento dinámico: se refiere a un modo que asigna dinámicamente espacio de almacenamiento según sea necesario durante la ejecución del programa. Las variables almacenadas en el área de almacenamiento dinámico se establecen y liberan de acuerdo con las necesidades de operación del programa y generalmente incluyen: parámetros de función, protección automática en el sitio y direcciones de retorno al llamar a funciones;
12.2. División del tipo de almacenamiento
Existen cuatro tipos de almacenamiento en lenguaje C: automático, estático, de registro y externo.
Las variables definidas por la palabra clave auto son variables automáticas y auto se puede omitir. Si no se escribe auto, se define implícitamente como "categoría de almacenamiento automático" y pertenece al modo de almacenamiento dinámico.
Lo que se modifica con static es una variable estática. Si se define dentro de una función, se denomina variable local estática. Si se define fuera de una función, se denomina variable externa estática.
Nota: Las variables locales estáticas pertenecen a la categoría de almacenamiento estático. La unidad de almacenamiento se asigna en el área de almacenamiento estático y no se liberará durante toda la ejecución del programa. A las variables locales estáticas se les asignan valores iniciales; en tiempo de compilación, es decir, solo se les asigna un valor inicial una vez si no se especifica ningún valor inicial al definir una variable local, para variables locales estáticas, el valor inicial se asignará automáticamente a 0 (para variables numéricas); ) o el carácter nulo (para variables de caracteres) en el momento de la compilación.
Para mejorar la eficiencia, el lenguaje C permite que los valores de las variables locales se coloquen en registros en la CPU. Estos registros se denominan "variables de registro" y se declaran con la palabra clave registro.
Nota: Sólo 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, por lo que es imposible definir cualquier número de variables de registro. Las variables estáticas locales no se pueden definir como variables de registro.
Las variables declaradas con extern son variables externas. El significado de variables externas es que la función puede llamar a variables definidas después de la función.
# includ ltstdio.h gt
//Fuente cuenta oficial de WeChat: lenguaje C y programación CPP
int main()
{
//Definir variables locales externas
extern int x;
Devuelve 0;
}
int x = 100;
13. Función interna función externa!
En lenguaje C, las funciones que no pueden ser llamadas por otros archivos fuente se denominan funciones internas. Las funciones internas se definen mediante la palabra clave estática, por lo que también se denominan funciones estáticas. Su forma es:
.Nombre de la función estática [tipo de datos] ([parámetro])
La estática aquí es una restricción en el alcance de la función. Solo se puede usar en el archivo fuente donde se encuentra la función, por lo que. Las funciones internas con el mismo nombre de función aparecen en No hay problema 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 de la siguiente forma:
Externa [tipo de datos]. nombre de la función ([Parámetro])
El lenguaje C estipula que cuando no se especifica el alcance de una función, el sistema la considerará como una función externa de forma predeterminada, por lo que extern se puede omitir cuando se ejecuta una función externa. Es necesario definir la función. Extern14. Array Array: un espacio de memoria contiguo con tamaño fijo y tipos de datos consistentes. Declaración de matriz: Nombre de matriz de tipo de datos [longitud n]
Nombre de matriz de tipo de datos [longitud n] = {elemento 1, elemento 2, elemento 3,...};
Datos escriba el nombre de la matriz [] = {elemento 1, elemento 2, elemento 3...};
Número escriba el nombre de la matriz [longitud n]; = elemento 2; ..... Nota: 1 y el subíndice de la matriz comienzan con 0. Al inicializar la matriz, el número de elementos de la matriz no puede ser mayor que la longitud de la matriz declarada; se utiliza el primer método de inicialización, cuando el número de elementos es menor que la longitud de la matriz, inicializa los elementos redundantes de la matriz a 0. Cuando la matriz no se inicializa después de la declaración, los elementos de inicialización de los elementos de matriz de tipo estático y externo son; 0, y los elementos de inicialización de los elementos de matriz de tipo automático son El valor de inicialización no está definido.
15. Recorrido de matriz
# include ltstdio.h gt
int main()
{
int arr【】= { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
int I
for(I = 0; i lt10;i)
{
printf("d\n", arr[I]);
}
Regresar 0;
}
Matriz de tipo burbuja
La idea del tipo de burbuja es comparar elementos adyacentes entre sí y colocar el número mayor en el atrás hasta que todos los números estén ordenados.
Cadenas y matrices
En lenguaje C, no hay forma de definir directamente el tipo de datos de la subcadena.
Debe utilizar una matriz para definir la cadena requerida, el formato es el siguiente:
Nombre de cadena de caracteres [longitud] = "Contenido de cadena"
Nombre de cadena de caracteres [longitud]; = {'String 1', 'String 2', ..., "String n", "\0"};
Nota:
La longitud en [] puede ser omitido;
En el segundo método, el último elemento debe ser "\0", lo que indica el final;
¡El segundo método no puede escribir chino! ; Al generar una cadena, use: printf (" s ", nombre de la matriz de caracteres); o puts (nombre de la matriz de caracteres)
16. ;
strcmp(s 1, s2): Compara cadenas; al comparar, las cadenas se convertirán a 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 resultado devuelto es 1, lo que significa que s1 es mayor que el código ASCII de s2, y el resultado devuelto es -1, lo que significa que s1 es menor que el código ASCII de s2.
strcpy (s 1, s2): copia de cadena; S2 reemplazará el contenido en s1;
strcat (s1, s2) empalma S2 después de s 1; debería ser suficiente!
atoi(s 1) ¡Convierte una cadena a 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 y las matrices unidimensionales son similares y tienen dos tipos:
Tipo de datos nombre de matriz [expresión constante 1] [expresión constante 2]... [expresión constante n] = { { valor 1, ..., valor n}, { valor 1, ... valor n}, ..., { valor 1, ..., valor.
Nombre de matriz de tipo de datos [expresión constante 1] [expresión constante 2]... [expresión constante n]; nombre de matriz [subíndice 1] [subíndice 2]... [debajo del estándar n] = valor ;
Se debe tener en cuenta lo siguiente al inicializar matrices multidimensionales:
Cuando se utiliza la primera inicialización, la declaración de matriz debe especificar las dimensiones de las columnas. Debido a que el sistema asigna espacio en función del número total de elementos en la matriz, cuando se conoce el número total de elementos y la dimensión de la columna, la dimensión del trazo se calculará directamente;
Cuando se usa En la segunda inicialización, se deben especificar las dimensiones de fila y columna de la declaración de matriz.
18. Atravesar matrices multidimensionales
Usar bucles anidados
Nota: ¡Cada subíndice unidimensional de una matriz multidimensional no puede salirse de los límites!
19. Estructura
La matriz C permite 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 elementos de datos.
La estructura se utiliza para representar registros. Supongamos que desea realizar un seguimiento de la actividad de los libros en su biblioteca, es posible que desee realizar un seguimiento de las siguientes propiedades de cada libro:
Título
Autor
Asunto< /p >
ID del libro
Definir estructura
Para definir una estructura, se debe utilizar una declaración de estructura. La declaración de estructura define un nuevo tipo de datos con varios miembros. El formato de la declaración de estructura es el siguiente:
Etiqueta de estructura {
Lista de miembros
Lista de miembros
¿Lista de miembros?
...
}Lista de variables
La 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.
Las variables de estructura de lista de variables se definen al final de la estructura, antes del último punto y coma, y puede especificar una o más variables de estructura.
A continuación se explica cómo declarar una estructura de libro:
Libro de estructura
{
Shire. Título【50】;
Carácter. Autor【50】;
Carácter. Tema【100】;
int? book_id
}Libro;
En circunstancias normales, debe haber al menos dos etiquetas, la lista de miembros y las partes de la lista de variables. Aquí hay algunos ejemplos:
//Esta declaración declara una estructura con tres miembros, un entero A, un carácter B y una doble c.
//También se declara la variable de estructura s1.
//Esta estructura no está marcada.
Estructura
{
int a;
char b;
doble c;
} s 1;
//Esta declaración declara una estructura con tres miembros, a saber, un entero A, un carácter B y un doble c.
//El nombre de la etiqueta de la estructura es SIMPLE y no se declaran variables.
Estructura simple
{
int a;
char b
Doble c
};
//La estructura está marcada como SIMPLE y declara las variables t1, t2 y t3.
struct SIMPLE t1, T2 [20], * t3
//También puedes usar typedef para crear nuevos tipos.
estructura typedef
{
int a;
char b
doble c
} Simple2
//Ahora se pueden declarar nuevas variables de estructura utilizando el tipo Simple2.
Simple2 u1, U2[20], * u3
Acceder a los miembros de la estructura
Para acceder a los miembros de una estructura utilizamos el operador de acceso a miembros (. ) El operador de acceso .member es un punto entre el nombre de la variable de estructura y el miembro de la estructura al que queremos acceder. Puede definir variables de tipo de estructura utilizando la palabra clave struct. El siguiente ejemplo demuestra el uso de la estructura:
# include ltstdio.h gt
# include ltstring.h gt
//Fuente de la cuenta oficial de WeChat: Lenguaje C y Programación CPP
Libro de estructura
{
Car. Título【50】;
Carácter. Autor【50】;
Carácter.
Tema【100】;
int? book_id
};
int main()
{
struct Books Book1;/*Declaración libro 1, tipo de libro */
Estructura Libro 2; /*Declarar Libro2, escriba Libros */
/* Detalles del Libro1*/
strcpy(libro 1 . título, "C Programación");
strcpy (autor del libro 1, "Nuha Ali");
strcpy (tema del libro 1, "Tutorial de programación en C");
libro 1. book_id = 6495407;
/*Detalles del libro 2*/
strcpy(book2.title, "Facturación de telecomunicaciones"
strcpy); (libro2 . autor, "Zara Ali");
strcpy (libro2 . asunto, "Tutorial de facturación de telecomunicaciones"
Libro2 .book_id = 6495700
/*Información de salida del Libro1*/
printf ("Título del Libro 1: s\n", Título del Libro 1);
printf ("Autor del Libro 1: s\n" , Libro 1. autor);
printf ("Libro 1 tema: s\n", Libro 1. tema);
printf ("Libro 1 Libro _ id: d\ n", Libro 1. Libro _ id);
/*Imprimir la información del segundo libro*/
printf (" título del libro2: s\n", libro2. título);
printf ("libro2 autor: s\n", libro2 . autor
printf ("libro2 tema: s \n", libro2.subject);
printf("Libro 2 Book_id: d\n",Book2.Book_id);
Devuelve 0;
p>}
Aprendiendo C bien ¡Es un trampolín para unirse a una gran fábrica! Si tuviera esta clase, mi C no sería así.
¿Caducado?
20. ***Verbo
* * *El objeto es un tipo de datos especial que le permite almacenar diferentes tipos de datos en la misma ubicación de memoria. Puede definir un tema que contenga varios miembros, pero solo un miembro puede tener un valor en cualquier momento. * * * El cuerpo proporciona una forma eficaz de utilizar la misma ubicación de la memoria.
# include ltstdio.h gt
# include ltstring.h gt
Datos de la unión
{
int I;
Flotante f;
Carc.
str【20】;
};
int main()
{
datos de datos de unión;
printf("Tamaño de memoria ocupado por datos: d\n", sizeof(data));
Devuelve 0;
}
Puntero
# include ltstdio.h gt
int main()
{
int? var=20? /*Declaración de variables reales*/
int? * ip/*Declaración de variable de puntero*/
ip = ampvar? /*Almacenar la dirección de la variable en la variable puntero*/
printf ("Dirección de la variable: p\n", ¿ampvar?);
/*La dirección almacenada en la variable de puntero Dirección*/
printf("Dirección almacenada en la variable IP: p\n", IP);
/*Usar puntero para acceder al valor*/
printf (*valor de la variable IP: d\n", *IP);
Devuelve 0;
}
22. Lectura y escritura de archivos
Escribir archivo
# include ltstdio.h gt
int main()
{
ARCHIVO * fp = NULL
FP = fopen("/tmp/test.txt", "w"
Esta es una prueba para fprintf...\n");
fput("Esta es una prueba de fput...\n", FP
fclose(FP); p>Leer Obtener archivo
# include ltstdio.h gt
int main()
{
FILE * fp = NULL
char buff【255】;
FP = fopen("/tmp/test . txt", "r");
fscanf(FP, "s ", buff );
printf ("1: s\n", buff);
fgets (buff, 255, (FILE *) FP);
printf ("2: s\n", buff);
fgets (buff, 255, (FILE *) FP); ", buff );
fclose (FP);
}
Lenguaje C y ruta de aprendizaje de C
23. Algoritmo de clasificación
Diez algoritmos de clasificación clásicos (código de demostración dinámica)
24 Algoritmos de búsqueda
Nueve algoritmos de búsqueda
Conocimientos de entrevistas
Resumen de conocimientos sobre lenguaje C y entrevistas en C
26. Procesamiento de textos
Resumen completo de operaciones de cadenas
27. Interpretación de la biblioteca estándar universal del lenguaje C
Interpretación de la biblioteca estándar universal del lenguaje C
28. El algoritmo codicioso más utilizado en lenguaje C
El más utilizado Algoritmo codicioso en lenguaje C El algoritmo fue derrotado de esta manera.
29. Errores y contramedidas comunes de la memoria del lenguaje C
Errores y contramedidas comunes de la memoria en el lenguaje C
30. El lenguaje C implementa la orientación a objetos en principio.
El lenguaje C implementa principios orientados a objetos.
31. Lenguaje C/Administración de memoria C
Después de leer este artículo, ¿aún puedes entender el lenguaje C/Administración de memoria C?
32. Hablemos de nuevo sobre los punteros del lenguaje C
Hablemos de los punteros: Big Brother eliminará la nube de punteros C por usted.
Función de devolución de llamada del puntero de función del lenguaje C
Explicación detallada del puntero del lenguaje C (bonificación al final del artículo)
33.Comando de preprocesamiento del lenguaje C
Explicación detallada del texto extenso: comandos de preprocesamiento en lenguaje C
Programación eficiente y optimización de código en lenguaje C
Programación eficiente y optimización de código en lenguaje C
p>
35. Estructura del lenguaje C
¡La estructura del lenguaje C ha sido conquistada de esta manera! ¡Vale la pena coleccionarlo!
36. Explicación detallada del código original, código complementario y código complementario
Explicación detallada del código original, código complementario y código complementario
37. definición de macro de lenguaje
Una breve discusión sobre el uso de definiciones de macro en lenguaje C
38.* * *Utilice los modos unión, enumeración y endian grande y pequeño en lenguaje C.
Unión, enumeración y modos endian grandes y pequeños de * * * en lenguaje C