Notas de programación en lenguaje C

El viaje de mil millas comienza con un solo paso, y la pagoda de nueve pisos comienza desde la base del suelo. C no es lo suficientemente sólido, así que reinicié la práctica. Algunas notas a las que se debe prestar atención durante el proceso.

1. ¡El código original, el código inverso y el código complementario de números positivos son iguales!

2. Operación lógica
Regla 1: siempre que uno de los operandos sea del tipo de punto flotante, la expresión es del tipo de punto flotante, el operando es un número entero y la expresión también es un número entero. Por ejemplo
:

flotante a=0,c=0;
a=5/2;
printf("%f\n",a);

imprime 2
en lugar de 2.5

Solución Uno de los operandos se cambia a un tipo de punto flotante, y la expresión de salida es un tipo de punto flotante.Regla
2: Los dos operandos del operador % restante deben ser números enteros, y el signo del resultado de la expresión es determinado por el dividendo
Ejemplo
inserte la descripción de la imagen aquí

Regla detallada 3: operador de autoincremento y autodecremento
a++;
leer primero y luego escribir,
primero leer a y luego realizar operaciones aritméticas
, a saber:
printf(“d%\n”,a);
a=a+1;

++a;
escribe primero y luego lee
Primero realiza una operación aritmética en a y luego lee
:
a=a+1;
printf(“d%\n”,a);

Regla 4 Operador de asignación
inserte la descripción de la imagen aquí
Regla 5:
El resultado de sizeof (expresión) es el número de bytes ocupados por el tipo de datos de la expresión
Regla 6: Operaciones mixtas de diferentes tipos de datos, la computadora convertirá automáticamente a datos de alta precisión para garantizar la precisión de la operación Tipo
Por ejemplo:
char se debe convertir a int
float se debe convertir a double
inserte la descripción de la imagen aquí
3. Algoritmo
Regla 1: Parámetro de entrada
scanf("%d%d", &a, &b);
Regla 2: Encuentra pares e impares números
if (a%2! 0)
{}
Regla 3: declaraciones de uso común
if (expresión) {}
if (expresión) {} else (expresión) {}
if (expresión) {} else if (expresión) else (expresión) {}
switch(expression)
{ case expresión constante 1: sentencia 1; pausa;
case expresión constante 1: sentencia 1; pausa;
predeterminado: sentencia
}

Interpretación:
1. Si la expresión if es verdadera, ejecuta el contenido if
2. Si la expresión if es verdadera, ejecuta el contenido if Si es falsa, ejecuta el contenido else
3. Si la expresión if es verdadera, ejecuta el contenido de if. Si es falso, la
expresión else if es Si el contenido de else if es verdadero, ejecuta
el
contenido de else si
es falso. Value) instrucción break (salir del interruptor) La expresión switch no puede ser un tipo de punto flotante, debe ser un valor fijo } 4. Regla 1 de matriz unidimensional : la longitud de la matriz debe ser una expresión constante entera, que se puede precompilar en la fórmula de definición de macro, consulte la definición de macro en el arreglo Regla 2: El arreglo no asignado, el contenido es desconocido Ejemplo: int arr[5];arr[0]=?;arr[1]=? ... Regla 3: Asignación parcial, la parte restante sin asignar es 0 int arr[5={0};]; arr[0]=0;arr[1]=0... Regla 4: Utilice sizeof() para obtener la longitud Regla 5: obtener la longitud de la matriz (número total de bytes/tamaño de (tipo)) Ejemplo: int arr[5]={0}; printf("longitud: %d\n", sizeof(arr)/sizeof( arr[0]) )















5. Matriz bidimensional
Regla 1: Una matriz bidimensional ocupa múltiples espacios de memoria continuos, lo que equivale a la continuidad de una matriz unidimensional Ejemplo
:
inserte la descripción de la imagen aquí
Regla 2: Total de bytes = tamaño de (tipo de matriz) * número de filas y columnas
Regla 3: Cálculo La fórmula para la posición del elemento en la matriz
Ejemplo a[ 1 ][ 2 ] es el primero en la matriz
3+2=5th
6. Matriz unidimensional

7. Matriz bidimensional

8.
Detalles de la estructura 1:
Ejemplo
struct estudiante
{ int num; int c_score };float avgint ps_score;; el valor inicial Método de asignación del valor inicial 1.struct estudiante Tom={10,90,98,94.5}; 2 .Tom.num=10; Detalle 2: Al declarar el tipo, defina la variable Ejemplo 1 struct estudiante { int num ; int c_score; int ps_score; float avg; }; //struct estudiante //nombre del tipo //struct estudiante Tom ; //Variable Tom //struct estudiante Tom = {10}; //valor inicial de la estructura, similar a una matriz Asignación //Después de definir la variable de estructura, //Puede usar Tom.num = 10; para asignar valores a los miembros de la estructura Ejemplo 2


























struct estudiante
{ int num; int c_score; int ps_score; float avg; }Tom;//Tom es una variable de estructura (las variables se definen al declarar, equivalente a struct estudiante Tom;) Ejemplo 3 struct estudiante { int num; int c_score; int ps_score; float avg; }Tom; Jary;//Tom y Jary son variables de estructura (las variables se definen al mismo tiempo que la declaración, lo que equivale a struct estudiante Tom;) Regla 3: Las variables ocupan espacio en la memoria Regla 4: Estructura se omite Nombre, define directamente la variable de estructura struct //estudiante (este método solo se puede definir una vez, y luego la variable de estructura no se puede definir de nuevo) { int num; int c_score; int ps_score; float avg; }Tom; Jary; //Tom, Jary es una variable de estructura Regla 5: asignación de matriz de estructura struct estudiante





























{ int num; int c_score[2]; int ps_score; }Tom; Jary; //Tom y Jary son variables de estructura Tarea: struct estudiante Tom = {10, {20,30,40}, 50};// Prevenir el matriz de la estructura faltante estudiante Jary = {10, 20, 30, 40, 50};






8. Typedef le da al tipo
existente un alias typedef signed char int8 //signed char a es equivalente a int8 a detalle 2: uso de la estructura typedef Ejemplo 1 typedef struct student { int num; int c_score[2]; int ps_score; }STU;//Después de agregar typedef, la STU aquí ya no es una variable de estructura //sino un alias de la estructura struct estudiante STU Tom={10, {20,30,40}, 50}//equivalente a struct estudiante Tomás












Regla 3
& es el carácter de la dirección//transmitir a la dirección de destino

9. Array de estructura
Definición método 1
struct estudiante
{ int num; int c_score[]; int ps_score; };//Definición estructura struct estudiante class1[5];




Definición método 2
struct estudiante
{ int num; int c_score[]; int ps_score; }; class1[5]; //class1 es el nombre de la matriz de estructura/representa una estructura con 6 tipos de estructura de estudiante



Método de inicialización
struct estudiante class1[2] = { {10,{20,30,40},50},{10,{20,30,40},50},{10,{20,30,40},50 }};//Inicializar los valores iniciales de los miembros de las 3 estructuras

El uso de matriz estructural
El ejemplo 1
requiere encontrar la puntuación más alta entre N estudiantes y generar la información del estudiante
typedef struct estudiante
{ int num; int score; }STU; //STU es el alias de la estructura STU class1[n]= { { { 10,90},{20,70},{30,95}}; int i =0; int max=0; for(i=1;i<n;i++) { if(class1[i].score > class1[max].score) max=i;//filtrar el puntaje más alto } print("El alumno con el puntaje más alto:\n") print("Número de serie: %d\n", class1[max].num ); print("numero de serie: %d\n", class1[max].score);












hora:2021/11/24

9. Alcance y variables
Regla 1:
Alcance del archivo (variable global): Cubre el archivo de principio a fin Alcance
de la función (variable local): Los parámetros y el cuerpo de la función pertenecen al alcance de la función, el valor devuelto el nombre de la función pertenece al alcance del archivo Regla
2:
Cumple al bloque de sentencias: {}, que pertenece al alcance del bloque de sentencias
Regla 3:
1. Los diferentes alcances no entrarán en conflicto
2. El mismo alcance está cerca uno del otro
Regla 4:
alcance extendido externo: los identificadores de alcance de archivo pueden extender su alcance a través de él

10.
Reglas internas de almacenamiento 1:
Pila de variables: modificación automática (se omite por defecto) -> 99 % de las variables locales
Las variables locales modificadas estáticas abrirán directamente bloques de memoria en tiempo de compilación -> 1 % de las variables locales
destruyen bloques de memoria: ejecución de la función Después la finalización, se devolverá la memoria.Regla
2;
declaración de variable -> abrir un bloque de memoria
más allá del alcance del alcance -> de hecho, el espacio de memoria de la variable local se destruye después de ejecutar el alcance
Regla 3:
Global variables (variables estáticas): use static para declarar la
memoria Tiempo de desarrollo: tiempo de compilación
Tiempo de destrucción de la memoria: al final de la función principal Los parámetros formales de la
regla 4 no se pueden declarar estáticos, solo se pueden usar como variables locales modificadas por auto Regla 5 Variables no tienen asignado un valor por defecto de 0 Regla 6 Los identificadores globales (macros/variables/funciones) utilizan Modificación estática, no indica el área global, pero indica que el identificador solo se puede ampliar y utilizar en este archivo




Expansión: reglas de nomenclatura de identificadores:
nombre de macro -> todo en mayúsculas,
nombre de variable -> palabra única en minúsculas, la primera palabra de varias palabras en minúsculas y la primera letra de cada palabra subsiguiente en mayúsculas
Nombre de función -> palabra única en mayúsculas, varias palabras Poner en mayúscula la primera letra de cada palabra

11. Reglas de puntero
1
El puntero es la dirección
y el símbolo de la dirección (printf("%p\n",&a);->obtiene la posición de la dirección de a en la memoria),
donde la dirección de a es una constante y la dirección de una variable es una constante y no se puede modificar ni transformar

12. Variable puntero
Regla 1

  • *a // * operador puntero

hora: 2021/11/25
Referencia de
https://www.bilibili.com/video/BV1iz4y1S7NK?p=11

Supongo que te gusta

Origin blog.csdn.net/weixin_49048045/article/details/121235076
Recomendado
Clasificación