Conociendo el lenguaje C (notas de estudio de diez mil palabras)

Tabla de contenido

1. ¿Qué es el lenguaje C?

2. El primer programa en lenguaje C

 2.1 El primer programa en lenguaje c:

3. Tipo de datos

3.1 Enteros: Editar

 3.2 Tipo de punto flotante: float——número de punto flotante de precisión simple; double——número de punto flotante de precisión dobleEditar

3.3 tipo nulo: El tipo nulo especifica que no hay ningún valor disponible.

3.4 Conversión de tipos de datos:

 4. Variables y constantes

4.1 Variables (inicialización recomendada)

4.1.1 Crear variables

4.1.2 Identificadores

4.1.3 Reglas para nombres de variables

4.1.4 El arte de nombrar variables: ver el nombre y conocer el significado.

4.1.5 Clasificación de variables:

4.1.6 Alcance variable y ciclo de vida

 4.2 Constantes (generalmente todas en mayúsculas)

4.2.1 Usando el preprocesador #define

4.2.2 Usando la palabra clave const

4.2.3 enum (enumeración)

La enumeración es un tipo de datos básico en lenguaje C que se utiliza para definir un conjunto de constantes con valores discretos. , lo que puede hacer que los datos sean más concisos y fáciles de leer.

 5. Cadenas y caracteres de escape y comentarios

5.1 Cuerdas

5.2 Caracteres de escape 

5.3 Notas

6. Declaración de selección y declaración de bucle

6.1 Declaración selecta

6.1.1 Sintaxis de la sentencia if en lenguaje C:

 6.1.2 Sintaxis de la instrucción if...else en lenguaje C:

6.1.3 Sintaxis de sentencia if anidada en lenguaje C:

6.1.4 Sintaxis de la sentencia switch en lenguaje C: ​Editar

6.1.5 Sintaxis de la sentencia switch anidada en lenguaje C:

6.2 Declaraciones de bucle

6.2.1 bucle while:

6.2.2 bucle for:

6.2.3 bucle do...while:

6.2.4 Anidamiento de bucles:

6.2.5 Declaración de control de bucle:

 Siete Función

7.1 Definición de funciones

7.2 Funciones de llamada   

Ocho matriz

Nueve Operadores

9.1 Operadores aritméticos

9.2 Operadores bit a bit (que involucran binario, no por ahora)

9.3 Operadores de asignación

 9.4 Operadores Lógicos

 9.5 Operadores relacionales

9.6 Operadores varios 

 9.7 Expresiones de coma

10. Palabras clave

11. Familiarizarse con los punteros (básico)

11.1 Memoria

11.2 ¿Qué es un puntero?

11.3 Uso de punteros

11.4 Tamaño de las variables de puntero

12. Estructura

12.1 ¿Qué es una estructura?

12.2 Definición de una estructura

 12.3 Inicialización de la estructura


1. ¿Qué es el lenguaje C?

1. El lenguaje C es un lenguaje de programación de computadora de propósito general , que se usa ampliamente en el desarrollo de bajo nivel .

2. El estándar original del lenguaje C: ANSI C , C89, C90, C99, C11....

3. La computadora procesa información binaria (011101000010011)

4. El lenguaje C es un lenguaje de programación de computadoras orientado a procesos , que es diferente de los lenguajes de programación orientados a objetos como c ++ y java.

Los compiladores actuales incluyen principalmente Clang , GCC , WIN-TC, SUBLIME, MSVC (entorno de desarrollo integrado vs2019) , Turbo C, etc.

2. El primer programa en lenguaje C

1. Entorno de desarrollo integrado: integra muchas subfunciones: edición, compilación, vinculación, ejecución, depuración

 2. Los programas en lenguaje C generalmente tienen dos archivos: archivo fuente .c archivo de encabezado .h 

 2.1 El primer programa en lenguaje c:

#include<stdio.h>

int main()
{
    printf("Hello World!");
    return 0;
}

Nota: (1) La función principal es el punto de entrada del programa, es decir, el programa comienza a ejecutarse desde principal.

        (2) Un proyecto solo puede tener una función principal.

        (3) La primera línea del programa  #include <stdio.h>  es una directiva de preprocesador, que le dice al compilador de C que incluya el archivo stdio.h antes de la compilación real.

         (4) printf(...)  es otra función disponible en C que imprime información en la pantalla.

         (5) devuelve 0;  finaliza la función main() y devuelve un valor de 0.

3. Tipo de datos

3.1 Número entero:

Nota: ①long long 8 bytes   

②La salida de tipo Int usa %d la salida de tipo largo usa %ld larga la salida de tipo largo usa %lld

 3.2 Tipo de punto flotante: float——número de punto flotante de precisión simple; double——número de punto flotante de precisión doble

Nota: Los datos de punto flotante escritos directamente serán predeterminados al tipo doble por el compilador

3.3 tipo nulo: El tipo nulo especifica que no hay ningún valor disponible .

3.4 Conversión de tipos de datos:

(1) Conversión de tipos de datos: en lenguaje C, si una expresión contiene constantes y variables de diferentes tipos, se convertirán automáticamente al mismo tipo durante el cálculo; en lenguaje C, los tipos de datos también se pueden convertir a la fuerza .

//强制类型转换:(数据类型)


int a = (int)3.14;     //3.14默认为double类型,但是通过(int)被强制转换为整型
printf("a=%d", a);   //输出结果为a=3

(2) Reglas de conversión automática: ① El número de punto flotante se asigna al tipo entero y el punto decimal del número de punto flotante se descarta;

                                   ②) Cuando se asigna un número entero a un tipo de punto flotante, el valor permanece sin cambios, pero se almacena en la variable de punto flotante correspondiente.

Adjunto: Unidades comunes en computadoras:

 4. Variables y constantes

4.1 Variables (inicialización recomendada)

4.1.1 Crear variables

1. Tipo de dato + nombre de variable. ( Agregue una f a los datos detrás de float, pero no para doble )

4.1.2 Identificadores

Un identificador C es un nombre que se utiliza para identificar una variable, una función o cualquier otro elemento definido por el usuario. Un identificador comienza con las letras AZ o az o el guión bajo _ seguido de cero o más letras, guiones bajos y dígitos (0-9) .

Los caracteres de puntuación como @, $ y % no están permitidos en los identificadores de C. C es un lenguaje de programación sensible a mayúsculas y minúsculas . Por lo tanto, en C, Manpower  y  manpower  son dos identificadores diferentes.

4.1.3 Reglas para nombres de variables

1. Igual que el identificador, pero el nombre de la variable no puede ser el mismo que la palabra clave del lenguaje c .

4.1.4 El arte de nombrar variables: ver el nombre y conocer el significado .

①Nomenclatura de camello : se refiere al uso mixto de letras mayúsculas y minúsculas para formar los nombres de variables y funciones. por ejemplo: CamelCase; Girasol, etc.

②Nomenclatura húngara: el principio básico es: nombre de variable = atributo + tipo + descripción del objeto, donde el nombre de cada objeto requiere un significado claro, y se puede usar el nombre completo o parte del nombre. p.ej.char chGraden, int nLength, p = *pDoc, etc.

③Nomenclatura de subrayado: se refiere a agregar subrayado directamente a cada palabra independiente. Esta denominación es especialmente común en el código del núcleo. por ejemplo, sun_flower student_data, etc.

4.1.5 Clasificación de variables:

Variables locales ( mayor prioridad que las variables globales ) y variables globales. ( Adjunto: scanf es una función de entrada, el uso es el mismo que printf, excepto que el carácter de dirección & se agrega antes del nombre de la variable )

Adjunto: extern usa variables externas (extern int a = 0;)

4.1.6 Alcance variable y ciclo de vida

 4.2 Constantes (generalmente todas en mayúsculas)

4.2.1 Usando  el  preprocesador #define

#define puede definir una constante en el programa, que será reemplazada por su valor correspondiente en tiempo de compilación. (sin el símbolo de asignación "=")

#define MONEY 100;

4.2.2 Usando  la  palabra clave const

La palabra clave const se usa para declarar una variable de solo lectura, es decir, el valor de la variable no se puede modificar mientras se ejecuta el programa. ( La esencia sigue siendo una variable )

const int a = 100;

4.2.3 enum (enumeración)

La enumeración es un tipo de datos básico en lenguaje C que se utiliza para definir un conjunto de constantes con valores discretos. , lo que puede hacer que los datos sean más concisos y fáciles de leer.

 5. Cadenas y caracteres de escape y comentarios

5.1 Cuerdas

1. Esta cadena de caracteres entre comillas dobles (comillas dobles) se denomina literal de cadena (Literal de cadena), o cadena para abreviar.

Nota: El final de la cadena es un carácter de escape \0. Al calcular la longitud de la cadena, \0 es la marca final y no se cuenta como el contenido de la cadena.

2. Se usan comillas dobles para cadenas y comillas simples para caracteres simples, %s para cadenas y %c para caracteres simples. 

Las cadenas se pueden colocar en matrices de caracteres! Debe agregar \0 para un solo carácter, pero no necesita ingresar la cadena completa )

char site[7] = {'R', 'U', 'N', 'O', 'O', 'B', '\0'};
char site[] = "RUNOOB";
printf("%s", RUNOOB);
printf("%c", 'R');

3. Introducción sobre %d, etc.:

附:%f—flotante %lf—doble

 4. Funciones relacionadas con la manipulación de cadenas:

Nota: strlen busca el número de caracteres antes del primer \0 ( \0 no cuenta como la longitud de la cadena )

Ejemplo: 

5.2 Caracteres de escape 

1. Caracteres de escape:

Nota: ① Para imprimir \, se debe usar '\\'.

        ② Al calcular la longitud de una cadena, un carácter de escape cuenta como una longitud.

        ③ Tenga en cuenta que \ddd es octal y no contiene el número 8.

2. Tabla ASCII: de uso común ( A-65 a-97 caracteres 0-48 )

 La tabla ASCII está relacionada con los caracteres de escape \ddd, \xdd

por ejemplo: ① \130: 130 (octal) = 88 (decimal) por lo que la salida X

       ② \x30: 30 (hexadecimal) = 48 (decimal) por lo que la salida es 0

5.3 Notas

1. El papel de los comentarios: ① Los códigos innecesarios en el código se pueden eliminar directamente o comentar.

                         ② Algunos códigos en el código son difíciles de entender, puede agregar un texto de comentario.

2. Dos tipos de comentarios: ① /*xxxxxx*/ puede cruzar líneas de comentarios Defecto: no se pueden anidar comentarios

                      ② //xxxxxxxx puede comentar una línea o varias líneas Defecto: no se puede comentar entre líneas

6. Declaración de selección y declaración de bucle

1. El lenguaje C como lenguaje de programación estructurado: estructura de secuencia, estructura de selección, estructura de bucle.

6.1 Declaración selecta

6.1.1 Sintaxis de la instrucción if en lenguaje C   :

6.1.2 Sintaxis de la instrucción if...else  en lenguaje C   :

 6.1.3 Sintaxis de la instrucción if anidada en lenguaje C  :

 6.1.4 Sintaxis de  la instrucción switch en lenguaje C  :

 Nota:

  • La expresión  en la  instrucción switch  es una expresión constante y debe ser un número entero o un tipo de enumeración.
  • Puede haber cualquier número de declaraciones de casos en un conmutador. Cada caso va seguido de un valor para comparar y dos puntos.
  • La expresión constante del caso   debe tener el mismo tipo de datos que la variable en el conmutador y debe ser una constante o un literal.
  • Cuando la variable que se está probando es igual a la constante en el caso, las declaraciones que siguen al caso se ejecutarán hasta que   se encuentre una declaración de ruptura .
  • Cuando  se encuentra una  declaración de ruptura, el interruptor finaliza y el flujo de control salta a la siguiente línea después de la declaración de cambio.
  • No todos los casos deben contener  break . Si la declaración del caso no contiene  una ruptura , el flujo de control  continuará con  los casos subsiguientes hasta que se encuentre una ruptura.
  • Una  declaración de cambio  puede tener un  caso predeterminado opcional  , que aparece al final del cambio. El caso predeterminado se puede utilizar para realizar una tarea cuando ninguno de los casos anteriores es cierto.  No se requiere la instrucción break en el caso predeterminado  .

 6.1.5 Sintaxis de la declaración de cambio anidado en lenguaje C  :

Ejemplo: Satisfacer el subprograma de recompensa por antigüedad según el género

#include<stdio.h>
int main(void)
{
    char sex;
    int age  ;
    printf("请输入你的性别简称!男(M),女(F)\n");
    scanf_s("%c", &sex);
    switch (sex)
    {
    case 'M':
    case 'm':
    printf("你的性别为“男”请你进入测试!\n");
    printf("请输入你的工龄!\n");
    scanf_s("%2d",&age);
        switch (age)
        { 
        case 5:
            printf("奖励iphone一台!!\n");
            break;
        case 10:
            printf("奖励汽车一辆!!\n");
            break;
        case 15:
            printf("奖励小楼一栋!!\n");
            break;
        default:
            printf("抱歉,未满足奖励条件或者超出工龄!!\n");
            break;
        }
    break;
    case 'F':
    case 'f':
        printf("你的性别为“女”请你进入测试!\n");
        printf("请出入你的工龄!\n");
        scanf_s("%2d",&age);
        switch (age)
        {
        case 5:
            printf("奖励iphone一台!\n");
            break;
        case 10:
            printf("奖励名牌化妆品一套!\n");
            break;
        case 15:
            printf("奖励爱马仕包一个!\n");
            break;
        default:
            printf("抱歉, 未满足奖励条件或者超出工龄!!\n");
            break;
            }
        break;    
    }
    return 0;
}

6.2 Declaraciones de bucle

6.2.1 bucle while:

La  declaración de bucle while en lenguaje C ejecuta una declaración de destino repetidamente siempre que la condición dada sea verdadera  .

6.2.2 bucle for:

El  bucle for le permite escribir una estructura de control de bucle que se ejecuta un número específico de veces.

6.2.3 bucle do...while:

A diferencia  de los bucles for  y  while  , prueban la condición del bucle en la cabeza del bucle. En C, un ciclo do...while  verifica su condición al final del ciclo.

El ciclo do...while  es similar al ciclo while, pero el ciclo do...while asegura que el ciclo se ejecute al menos una vez.

6.2.4 Anidamiento de bucles:

El lenguaje C permite utilizar un bucle dentro de otro bucle.

①Anidamiento de while:

② anidamiento de para:

 

③Anidamiento de do...while:

6.2.5 Declaración de control de bucle:

break: cuando  aparece una instrucción break  en un ciclo, el ciclo terminará inmediatamente y el flujo del programa continuará ejecutando la siguiente instrucción inmediatamente después del ciclo.

continuar: la instrucción continuar en lenguaje C   es un poco como  la instrucción romper  . Pero no es una terminación forzada, continuar omitirá el código en el ciclo actual y forzará el inicio del siguiente ciclo. Para  el  ciclo for,  la instrucción de incremento automático aún se ejecutará después de que se ejecute la instrucción continuar . Para  los bucles while  y  do...while  , la  sentencia continue vuelve a ejecutar la sentencia condicional.

goto: La declaración goto en lenguaje C   permite la transferencia incondicional de control a la declaración marcada en la misma función.

Nota: La instrucción goto no se recomienda en ningún lenguaje de programación. Porque hace que el flujo de control del programa sea difícil de seguir, lo que hace que el programa sea difícil de entender y difícil de modificar.

 Siete Función

Función: La característica de la función es simplificar el código y reutilizar el código.

7.1 Definición de funciones

Nota: Tipo de devolución: una función puede devolver un valor. return_type  es el tipo de datos del valor devuelto por la función. Algunas funciones realizan la operación deseada sin devolver un valor, en cuyo caso return_type es la palabra clave  void .

        ② Nombre de la función: este es el nombre real de la función. El nombre de la función y la lista de parámetros juntos forman la firma de la función.

        ③ Parámetros: Los parámetros son como marcadores de posición. Cuando se llama a la función, se pasa un valor al parámetro, que se denomina parámetro real. La lista de parámetros incluye el tipo, orden y número de parámetros de función. Los parámetros son opcionales, es decir, las funciones pueden no contener parámetros.

        ④ Cuerpo de la función: El cuerpo de la función contiene un conjunto de declaraciones que definen las tareas realizadas por la función.

7.2 Funciones de llamada   

Si la función se define después de la función principal, debe declararse primero.

#include <stdio.h>
 
/* 函数声明 */
int max(int num1, int num2);
 
int main ()
{
   /* 局部变量定义 */
   int a = 100;
   int b = 200;
   int ret;
 
   /* 调用函数来获取最大值 */
   ret = max(a, b);
 
   printf( "Max value is : %d\n", ret );
 
   return 0;
}
 
/* 函数返回两个数中较大的那个数 */
int max(int num1, int num2) 
{
   /* 局部变量声明 */
   int result;
 
   if (num1 > num2)
      result = num1;
   else
      result = num2;
 
   return result; 
}

Adjunto: si la palabra clave extern se agrega al extremo izquierdo del encabezado de la función al definir la función, la función es una función externa y otros archivos pueden llamarla.

Por ejemplo, el encabezado de la función puede ser:

extern int max (int a,int b)

Ocho matriz

1. Definición: Una colección de datos del mismo tipo.

int arr[10] = {1,2,3,4,5,6,7,8,9,10};//定义一个整形数组,最多放10个元素

2. Inicialización:

3. El subíndice de la matriz: el subíndice de la matriz comienza en 0 y a[0] representa el primer elemento de la matriz.

4. El uso de arreglos: Los arreglos deben usarse a través de bucles , ya sea de entrada o salida de datos.

Nueve Operadores

9.1 Operadores aritméticos

1. La siguiente tabla muestra todos los operadores aritméticos compatibles con el lenguaje C. Suponiendo que la variable  A  tiene un valor de 10 y la variable  B  tiene un valor de 20, entonces:

Nota: ①% solo puede ser un número entero.

② Con respecto a ++ y --, hay pre y post:

Pre: primero agregue (reste) uno, luego use post: use primero, luego agregue (reste) uno

9.2 Operadores bit a bit (que involucran binario, no por ahora)

&        |        ^        ~        <<        >>

9.3 Operadores de asignación

1. La siguiente tabla enumera los operadores de asignación admitidos por el lenguaje C (los últimos 5 involucran operadores bit a bit):

 9.4 Operadores Lógicos

1. La siguiente tabla muestra todos los operadores lógicos relacionales compatibles con el lenguaje C. Suponiendo que la variable  A  tiene un valor de 1 y la variable  B  tiene un valor de 0, entonces:

 9.5 Operadores relacionales

1. La siguiente tabla muestra todos los operadores relacionales compatibles con el lenguaje C. Suponiendo que la variable  A  tiene un valor de 10 y la variable  B  tiene un valor de 20, entonces:

9.6 Operadores varios 

1. La siguiente tabla enumera algunos otros operadores importantes admitidos por el lenguaje C, incluidos  sizeof  y  ?: .

Nota: ① la unidad sizeof() es un byte

②El último de arriba también se llama operador ternario y se puede usar de la siguiente manera:

 

 9.7 Expresiones de coma

1. Expresión de coma: exp1, exp2, exp3, ... expN

2. Características de la expresión de coma: calculado de izquierda a derecha, el resultado de la expresión completa es el resultado de la última expresión.

Adjunto: referencia de subíndice ([ ]), llamada de función (( )) y miembro de estructura (. ->)

10. Palabras clave

1. Palabras clave reservadas en lenguaje C

 

11. Familiarizarse con los punteros (básico)

11.1 Memoria

1. La memoria es una memoria particularmente importante en la computadora, y la ejecución de programas en la computadora se lleva a cabo en la memoria.

Por lo tanto, para usar la memoria de manera efectiva, la memoria se divide en pequeñas unidades de memoria y el tamaño de cada unidad de memoria es de 1 byte.

Para poder acceder efectivamente a cada unidad de la memoria, las unidades de memoria están numeradas, y estos números se denominan dirección de la unidad de memoria.

2. Las variables se crean en la memoria (se asigna espacio en la memoria) y cada unidad de memoria tiene una dirección, por lo que las variables también tienen direcciones. Saque la dirección variable de la siguiente manera:

#include <stdio.h>
int main()
{
     int num = 10;
     &num;    //取出num的地址
    //注:这里num的4个字节,每个字节都有地址,取出的是第一个字节的地址(较小的地址)
     printf("%p\n", &num);//打印地址,%p是以地址的形式打印
     return 0;
}

11.2 ¿Qué es un puntero?

1. En términos generales, es un atajo. Un puntero es una dirección de memoria y una variable de puntero es una variable utilizada para almacenar una dirección de memoria. Al igual que cualquier otra variable o constante, debe declarar un puntero antes de usarlo para almacenar la dirección de otra variable. La forma general de una declaración de variable de puntero es:

type *var_name;

2. Aquí, type  es el tipo base del puntero, que debe ser un tipo de datos C válido, y var_name  es el nombre de la variable de puntero. El asterisco * que se usa para declarar un puntero es el mismo que se usa en la multiplicación. Sin embargo, en esta declaración, el asterisco se usa para indicar que una variable es un puntero. Las siguientes son declaraciones de puntero válidas:

int    *ip;    /* 一个整型的指针 */
double *dp;    /* 一个 double 型的指针 */
float  *fp;    /* 一个浮点型的指针 */
char   *ch;    /* 一个字符型的指针 */

Nota:

Todos los tipos de datos reales, ya sean enteros, coma flotante, caracteres u otros tipos de datos, corresponden al mismo tipo de valor del puntero, que es un número hexadecimal largo que representa una dirección de memoria.

La única diferencia entre punteros de diferentes tipos de datos es que el tipo de datos de la variable o constante a la que apunta el puntero es diferente.

11.3 Uso de punteros

Cuando se utilizan punteros, con frecuencia se realizan las siguientes operaciones:

Defina una variable de puntero, asigne la dirección de la variable al puntero y acceda al valor en la dirección disponible en la variable de puntero. Estos se devuelven utilizando el operador unario * para devolver el valor de la variable en la dirección especificada por el operando.

#include <stdio.h>
int main()
{
     int a = 10;
     // &-取地址操作符   
     int* pa = &a;  // '*'说明pa叫做指针变量 
     // int————说明pa是指向int类型的变量
     *pa = 20;   // * 解引用操作符——通过地址找到地址所指向的对象,*pa就等价于a                 
     printf("%d\n", a); 
     return 0;
}  //输出结果为20

Nota: Cuando &a saca la dirección del byte con la dirección más pequeña entre los cuatro bytes

11.4 Tamaño de las variables de puntero

1. El tamaño del puntero es de 4 bytes en una plataforma de 32 bits y de 8 bytes en una plataforma de 64 bits.

12. Estructura

12.1 ¿Qué es una estructura?

Las matrices C le permiten definir variables que pueden almacenar elementos de datos del mismo tipo, y las estructuras son otro tipo de datos definido por el usuario disponible en la programación C que le permite almacenar elementos de datos de diferentes tipos.

12.2 Definición de una estructura

 12.3 Inicialización de la estructura

struct Stu
{
    char name[20];    //名字
    int age;          //年龄
    char sex[5];      //性别
    char id[15];     //学号
};    //注意有分号
//打印结构体信息
struct Stu s = {"张三", 20, "男", "20180101"};

//.为结构成员访问操作符
printf("name = %s age = %d sex = %s id = %s\n", s.name, s.age, s.sex, s.id);

//->操作符
struct Stu *ps = &s;
printf("name = %s age = %d sex = %s id = %s\n", ps->name, ps->age, ps->sex, ps-
>id);

Supongo que te gusta

Origin blog.csdn.net/2303_77414881/article/details/131602978
Recomendado
Clasificación