Integrado desde la entrada hasta la competencia (en el suelo): intercambio de puntos de conocimiento ultra detallado 2

Linux C desde la entrada hasta la competencia (en el suelo)

  1. Conceptos básicos del lenguaje C (declaración de bucle)

  2. en bucle

  3. Formato:
    For (expresión 1; expresión 2; expresión 3)
    { cuerpo del ciclo; } Expresión 1: asignar valor inicial; expresión 2: condición de terminación; expresión 3: incremento o decremento. Nota: a) Si no hay una expresión de asignación de valor inicial, se puede escribir encima del bucle for; b) Sin la expresión 2, el bucle es un bucle sin fin, y sin la expresión 3 también es un bucle sin fin, pero la expresión 3 puede ser escrito al final del cuerpo del ciclo. c) for (;;): Indica un bucle infinito.








  4. La secuencia de ejecución
    primero ejecuta la expresión 1, luego juzga si la expresión 2 es verdadera, ejecuta el cuerpo del bucle cuando se establece, luego ejecuta la expresión 3, luego juzga si la expresión 2 es verdadera, luego continúa ejecutando el cuerpo del bucle y luego ejecuta la expresión 3...hasta la expresión Si no se establece la fórmula 2, el ciclo termina.

  5. for formato anidado
    for (expresión 1; expresión 2; expresión 3)
    { for (expresión 1; expresión 2; expresión 3) { cuerpo del bucle; } }




  6. mientras bucle

  7. Formato 1
    Mientras (expresión)
    { cuerpo del bucle; } Secuencia de ejecución: juzgue si la expresión es verdadera, ejecute el cuerpo del bucle, luego juzgue si la expresión es verdadera, ejecute el cuerpo del bucle, ... hasta que la expresión no sea verdadera, el termina el bucle. Nota: while(1) = bucle infinito.



  8. Formato 2: do...while
    do{ cuerpo del bucle; }while (expresión); Secuencia de ejecución: primero ejecute el cuerpo del bucle una vez, luego juzgue si es verdadero, continúe ejecutando el cuerpo del bucle si es verdadero y finalice el bucle si no es cierto.


  9. ir a bucle

  10. Bucle de formato
    :
    segmento de código,
    if (expresión)
    bucle goto;

  11. Secuencia de ejecución:
    Ejecute el segmento de código, juzgue si la expresión es verdadera y salte al ciclo para continuar ejecutando el segmento de código si es verdadera.

  12. Sentencia de control de bucle: romper; continuar; regresar

  13. romper: saltar fuera del bucle (terminar el bucle);

  14. continuar: finaliza este ciclo y continúa con el próximo ciclo.

  15. retorno: función final. En la función Main, el contenido de la función principal no se ejecuta normalmente y se acostumbra escribir: return -1;

  16. formación

  17. Concepto:
    una colección de datos de uno o más tipos de datos, y cada dato que forma una matriz se denomina elemento.

  18. Características
    Mismo tipo de datos, espacio de memoria continuo.

  19. matriz unidimensional

  20. Concepto: una matriz con un solo subíndice.

  21. Formato de definición:
    [tipo de almacenamiento] nombre de matriz de tipo de datos [subíndice];
    subíndice: el número de elementos.

  22. Acceso al elemento: nombre de la matriz [subíndice].
    El valor del subíndice: a partir de 0, el número de elementos = el número de subíndices - 1;

  23. Inicialización
    a) Sin inicializar en la definición
    El valor inicial es un valor aleatorio. A continuación, los valores iniciales deben asignarse elemento por elemento, y los elementos sin valores iniciales siguen siendo valores aleatorios.
    b) Parcialmente inicializados en el momento de la definición
    El valor de los elementos no inicializados es 0
    c) Todos inicializados en el momento de la definición
    Se puede omitir el subíndice.

  24. sizeof (nombre del arreglo): Calcula el tamaño del espacio ocupado por el arreglo.

  25. Aviso:

  26. Si se omite el subíndice durante el desarrollo, el espacio de desarrollo es el número de elementos correspondiente al número de inicializaciones. Si no se omite el subíndice, tantos valores de subíndice abren tantos espacios de elementos, solo la cantidad de elementos se puede inicializar como valor de subíndice.

  27. Una vez que se define la matriz, se determina el espacio de memoria abierto y el subíndice no puede ser un valor aleatorio o una cantidad desconocida cuando se define.

  28. Al acceder a datos fuera de los límites, no se informa ningún error y se debe prestar atención a los problemas fuera de los límites al usarlos.

  29. Clasificación: burbujeo, selección

  30. Clasificación de burbuja: el subíndice es 0 y el subíndice es 1, el número pequeño se mueve hacia atrás y luego el subíndice se compara con el subíndice 1 y el subíndice es 2, y el pequeño se mueve hacia atrás hasta que el más pequeño se coloca en el fin. Hazlo todo de nuevo y coloca el segundo número más pequeño en la penúltima posición. Ordenar por analogía.

  31. Matriz bidimensional

  32. Concepto: una matriz con dos subíndices.

  33. Formato:
    [tipo de almacenamiento] tipo de datos nombre de matriz [subíndice de fila] [subíndice de columna]
    contenido del elemento de acceso: nombre de matriz [fila] [columna]; el valor del subíndice comienza desde 0.

  34. Iterando sobre una matriz bidimensional: bucles anidados

  35. Problema de inicialización de matriz bidimensional local

  36. No se inicializa en el momento de la definición, y el valor inicial es un valor aleatorio, y la siguiente asignación debe asignarse una por una.

  37. Se inicializa parcialmente cuando se define, y se inicializa a 0.

  38. Todos se inicializan cuando se definen, y el subíndice de fila se puede omitir.

  39. El problema de la dirección de la matriz
    En la computadora, los bytes se usan como unidades y cada byte tiene su propio número de dirección. Si el espacio está definido para guardar el número de dirección, 32 significa que el número de dirección del sistema operativo es de 32 bits y se deben abrir 4 bytes, y el número de dirección de un sistema operativo de 64 bits es de 64 bits y 8 los bytes necesitan ser abiertos.
    El espacio de memoria de la matriz es continuo y la dirección del primer elemento se puede obtener sumando 1 a la dirección del segundo elemento.

  40. Matriz unidimensional
    El nombre de matriz de una matriz unidimensional es la dirección principal de la matriz unidimensional d, que es la dirección del primer elemento y es una constante de dirección Una vez que se define la matriz, se determina la dirección principal y no se puede cambiar.
    a) Dirección + 1: Obtiene la dirección del siguiente elemento.
    b) Agregue * antes de la dirección, lo que significa obtener el contenido de la dirección.
    c) Acceso directo al contenido del elemento: st[i] *(st+i)
    d) Acceso directo a la dirección del elemento: &st[i] st+i.

  41. Matriz bidimensional
    El nombre de matriz de la matriz bidimensional indica la dirección de la primera fila de la matriz bidimensional, que es una dirección de fila y es una dirección constante. Agregue 1 al nombre de la matriz para indicar la dirección de la siguiente fila.
    El segundo uso de a) : agregue antes de la dirección de la fila para reducir la dirección de la fila a la dirección de la columna.
    b) Los arreglos bidimensionales se pueden considerar como múltiples arreglos unidimensionales, y los nombres de los arreglos de cada arreglo unidimensional son: st[0], st[1], st[2]...st[n-1 ].
    c) Nombre del arreglo [subíndice de fila]: Indica la dirección del primer elemento de cada fila.
    d) Acceso directo al contenido del elemento: st[i][j]; ( (st+i)+j); *(st[i]+j)
    e) Acceso directo a la dirección del elemento: &st[i][j] ; * (st+i)+j; st[i]+j.

  42. funciones de manipulación de cadenas

  43. gets Obtener la cadena de la terminal
    a) Función: obtener la cadena de la terminal, y '\0' se agregará automáticamente;
    b) Parámetro: obtener la primera dirección donde se almacena la cadena.
    c) Valor devuelto: si tiene éxito, devuelve la dirección donde se almacena la cadena de caracteres
    ; si falla, devuelve NULL.
    Nota: Cuánto ingresa el terminal, cuánto toma, no hay problema de cruzar el límite de la matriz de detección medio grande, así que úselo menos.

  44. pone la cadena de salida en el terminal
    a) Función: cadena de salida en la pantalla del terminal.
    b) Parámetro: la primera dirección de la cadena de salida.
    c) Valor devuelto: éxito: el número de caracteres de salida, fracaso: EOF (-1).

  45. Borrar función: memset; bzero

  46. memset (s,c,n):
    a) Función: borrar.
    b) Parámetros: s: la primera dirección del contenido borrado, c: 0, n: bytes borrados.
    c) Valor devuelto: éxito: vaciar las primeras direcciones del contenido; fallo: NULL.

  47. bzero(s,n)
    a) Función: borrar.
    b) Parámetros: s: la primera dirección del contenido borrado, n: bytes borrados.
    c) Valor devuelto: Ninguno.

  48. puntero

  49. Puntero de nivel 1
    a) Puntero: Es la dirección.
    b) Formato de definición: [tipo de almacenamiento] tipo de datos*puntero nombre de variable
    Nota: Para cualquier tipo de variable, es necesario definir un puntero del tipo correspondiente para guardar la dirección de la variable, de modo que se pueda acceder indirectamente a la variable a través del puntero.

  50. Tres usos de
    a) Agregar antes de la dirección
    : tomar el contenido de la dirección.
    b) Agregar * antes de la dirección de la fila: degradar a la dirección de la columna (dirección del elemento).
    c) Agregar * después del tipo de datos: significa definir una variable de puntero del tipo correspondiente.

  51. Combinar punteros y matrices

  52. Puntero y matriz unidimensional:
    guarde la primera dirección de la matriz unidimensional a través del puntero y deje que la variable del puntero reemplace el nombre de la matriz unidimensional para acceder indirectamente a la matriz unidimensional.
    Los nombres de las matrices son constantes de dirección. Las variables de puntero son variables que pueden cambiar mientras se ejecuta el programa

  53. Acceso indirecto a arreglo unidimensional
    Dirección: p+i; &p[i];
    contenido: *(p+i); p[i].

  54. aritmética de punteros

  55. Operación aritmética
    a) +: el puntero p+n mueve n datos en la dirección de la dirección grande
    b) –: el puntero pn mueve n datos en la dirección de la dirección pequeña
    c) ++: el puntero p++ mueve un número en la dirección de la dirección grande
    d ) – : p: el puntero mueve 1 dato en la dirección de la dirección más pequeña
    e) - : pq el número de elementos de datos separados entre dos punteros

  56. operaciones relacionales

< >= <= != ==
El que tiene la dirección más grande es mayor que el que tiene la dirección más pequeña.

  1. Operaciones de asignación:
    = += -=
    No tiene sentido realizar operaciones entre punteros de diferentes tipos de datos.
  2. puntero secundario
  3. Concepto: lo que se guarda es la dirección del instrumento y el puntero.
  4. Formato: [tipo de almacenamiento] tipo de datos ** nombre de variable de puntero;
    nota: siempre que sea un puntero, guardará el número de dirección y el puntero del sistema operativo de 32 bits abrirá 4 bytes.
  5. Constantización constante
  6. const variable modificada
    const variable modificada, el valor de la variable no se puede modificar a través del nombre de la variable, pero se puede definir un puntero para apuntar a la variable, y el valor se puede modificar accediendo al contenido de la dirección a través del puntero.
  7. puntero modificado const a) El puntero de
    const int *p se puede modificar, pero la persona a la que apunta el puntero no se puede modificar a través del puntero. b) El puntero int * const p no se puede modificar, y el contenido apuntado por el puntero se puede modificar a través del puntero. Nota: Dado que la orientación del puntero no se puede modificar, solo se puede asignar una orientación en el momento de la definición. c) El puntero const int * const p no se puede modificar, y el contenido apuntado por el puntero no puede ser modificado por el puntero.





  8. void tipo vacío
    No existe una variable de tipo void, y void puede usarse para modificar punteros, funciones o como parámetros de función.
  9. void puntero modificado
    void* puntero puede coincidir con cualquier tipo de dirección, pero debe convertirse al tipo de dirección correspondiente al usarlo.
  10. Transferencia forzada
  11. Conversión forzada del tipo de datos Formato
    : variable = (tipo de datos) valor;
    generalmente es una conversión implícita, y la baja precisión se convierte en una operación de alta precisión durante la operación.
  12. Conversión forzada del tipo de puntero
    Formato: variable de puntero = (tipo de datos *) valor de dirección.
  13. Big endian y small endian
    a) Almacenamiento big endian: la dirección baja almacena el contenido de bytes alto y la dirección alta almacena el contenido de byte bajo.
    b) Almacenamiento little-endian: la dirección baja almacena el contenido de byte bajo y la dirección alta almacena el contenido de byte alto.
  14. Función
    Hay tres elementos de una función: función, parámetro y valor de retorno.
  15. Definición: encapsular un módulo de código con una función específica en una función (interfaz).
  16. Formato de definición:
    [tipo de almacenamiento] tipo de datos nombre de la función (parámetro formal)
    { cuerpo de la función; Devolver constante, variable o expresión; } Nota: a) El tipo de datos de la constante, variable o expresión devuelta debe ser coherente con el tipo de datos de la función . Si no hay devolución, el tipo de función se define como tipo vacío y no hay declaración de devolución en la función. b) La función definida necesita ser llamada directa o indirectamente por la función principal para realizar la función. c) Si la función definida no necesita pasar parámetros, el parámetro del prototipo de función se escribe como vacío. Si no escribe nulo y pasa el valor del parámetro real, no se informará ningún error, pero el valor de este parámetro ocupará espacio de recursos. Si este espacio se usa más tarde, se producirá un error y es fácil encontrar la causa de el error.






  17. Llamada de función: nombre de función (parámetro actual)
  18. Declaración de función: [tipo de almacenamiento] nombre de función de tipo de datos (parámetro);
    a) La declaración de función está encima de la función principal, y la declaración puede omitir el nombre de variable del parámetro formal.
    b) Si la función prototipo se define por encima de la función principal, se puede omitir la declaración.
  19. La diferencia entre parámetros formales y parámetros reales
    a) Parámetros formales: Los parámetros formales son variables de parámetros formales definidas al definir una función, que son valores existentes formalmente, y las llamadas a funciones abrirán espacio en la memoria.
    b) Parámetro real: El parámetro real es el valor pasado al llamar a la función, es el valor real y es el espacio de memoria abierto para el almacenamiento.
  20. Paso de parámetros de función
  21. Transferencia de valor
    Copie una copia del valor y pásela a otras funciones, cambie el contenido copiado y el contenido original permanece sin cambios.
  22. Transferencia de dirección
    Pase la dirección de la variable a otras funciones, y el contenido del elemento se puede modificar a través de la dirección.
  23. La esencia de la transferencia de matrices
    es también la transferencia de direcciones, que transfiere la primera dirección de la matriz.
  24. Parámetros de la línea de comandos
    int main(int argc, const char *argv[])
  25. argc: el número de argumentos de línea de comando
  26. argv: guarda el contenido de los parámetros de la línea de comandos y guarda la primera dirección de cada parámetro.
  27. familia de funciones de cadena
  28. strlen(char *s)
    a) Función: calcula la longitud de la cadena, excluyendo '\0';
    b) Parámetros: s: la primera dirección de la cadena a calcular;
    c) Valor de retorno: la longitud de la cadena
  29. La diferencia entre strlrn y sizeof
    a) strlen es una función y sizeof es una palabra clave.
    b) strlen es para calcular la longitud del número real de caracteres en la cadena, excluyendo '\0'
    c) sizeof es para calcular el tamaño del espacio de memoria ocupado, incluyendo '\0';
  30. strcpy (char *dest, char *src)
    a) Función: realizar la copia de la cadena
    b) Parámetros: dest: ubicación de almacenamiento de la cadena copiada; src: la cadena que se copiará.
    c) Valor devuelto: la primera dirección de la cadena copiada.
  31. strcat (char *dest, char *src)
    a) Función: realizar la concatenación de cadenas, eliminar el '\0' después de dest y luego concatenar.
    b) Parámetros: dest: la ubicación de almacenamiento de la cadena que se va a empalmar; src: la cadena que se va a empalmar.
    c) Valor devuelto: la primera dirección de la cadena empalmada.
  32. strcmp (char *s1, char *s2)
    a) Función: comparar el tamaño de dos cadenas de caracteres, comparar por carácter, comparar código ASCII de caracteres.
    b) Parámetro: la primera dirección de las dos cadenas de caracteres.
    c) Valor devuelto: s1>s2 devuelve un número positivo; s1<s2 devuelve un número negativo; s1=s2 devuelve 0.

Supongo que te gusta

Origin blog.csdn.net/qq_47023150/article/details/123442917
Recomendado
Clasificación