"C" Hu Chuan - Primeira introdução à linguagem C (mais adequado para iniciantes!)

Índice de artigos da série   


Capítulo 1  "C" Hu Zhuan - Primeira introdução à linguagem C (mais adequada para iniciantes!)


Índice

Índice de artigos da série   

Prefácio

 1. O que é linguagem C

2. O primeiro programa em linguagem C

 3. Tipo de dados

4. Variáveis, constantes

4.1 Como definir variáveis

4.1.1 Nomeando variáveis

4.2 Classificação das variáveis

4.3 Uso de variáveis

4.4 Escopo e ciclo de vida das variáveis

4.4.1 Escopo

4.4.2 Ciclo de vida

4.5 Constantes

4.5.1 Constantes literais

4.5.2 variáveis ​​constantes modificadas const

4.5.3 #define constantes de identificador definidas

4.5.4 Constantes Enum

5. String + caractere de transferência + comentário

5.1 Sequência

5.2 Caracteres de escape

5.3 Comentários

6. Selecione declarações

7. Instruções de loop

8. Função

9. Matriz

9.1 Definição de matriz

9.2 Subscritos de array

9.3 Uso de matrizes

10. Operador

10.1 Operadores aritméticos

10.2 Operadores de turno

10.3 Operadores de bits

10.4 Operador de atribuição

10.5 Operadores unários

10.6 Operadores relacionais

10.7 Operadores lógicos

10.8 Operadores condicionais

10.9 Expressões de vírgula

10. 10 Referências de subscritos, chamadas de função e membros de estrutura

11. Palavras-chave comuns

11.1 Cadastro de palavras-chave

11.2 Tipo de palavra-chave

11.3 Palavra-chave estática

11.3.1 Modificar variáveis ​​locais

11.3.2 Modificar variáveis ​​globais

11.3.3 Funções modificadas 

12. #define define constantes e macros 

12.1 #define define constantes de identificador

12.2 #define define macros

 13. Ponteiro

13.1 Memória

13.2 Tamanho das variáveis ​​ponteiro

 14. Estrutura


Prefácio

       Presumivelmente, algumas crianças acabaram de entrar em contato com a linguagem C. Assim como o editor, não tenho ideia do que a linguagem C está falando? Então, parabéns, você encontrou um tesouro. Então, sem mais delongas, siga os passos do editor para aprender sobre a linguagem C pela primeira vez !

       Como o título diz, a linguagem C inicial é ter um entendimento geral da linguagem C e construir a estrutura da linguagem C. Então, o editor vai começar a explicar. Lembre-se de que este capítulo é principalmente um esboço da linguagem C inicial. O conteúdo contém um grande número de links para explicar cada parte do conteúdo em detalhes.


 1. O que é linguagem C


Em primeiro lugar, explique o que é a linguagem C com suas próprias palavras . (Isso deve ser enfatizado, o entrevistador pode perguntar)

************************************************** ********************************************

       Idioma: chinês, japonês, inglês, etc. A linguagem é uma linguagem natural, uma linguagem usada pelas pessoas para se comunicarem umas com as outras.

       Linguagem de computador: Por analogia, é a comunicação entre humanos e computadores.

************************************************** *********************************************

       A linguagem C é uma linguagem geral de programação de computadores (é aqui que a linguagem C é incrível) e é amplamente usada para desenvolvimento de baixo nível .

       Se os leitores quiserem saber mais sobre as funções e funções da linguagem C, em Du Niang, você pode clicar neste link:                  Funções                                                                                                                        e funções da linguagem C.

       Quanto ao desenvolvimento de nível inferior , vamos explicar abaixo: Geralmente, os computadores são divididos em software de nível superior e software de nível inferior , e o software de nível inferior é o nível inferior.A linguagem C é amplamente utilizada no desenvolvimento de nível inferior. .

       O que o computador processa é informação binária(esse ponto é muito importante, pois se falarmos de conteúdo relacionado à memória no futuro, traremos esse ponto) . Ao aprender a linguagem C, precisamos usar um ambiente de desenvolvimento integrado . O ambiente de desenvolvimento integrado integra muitos subprogramas: edição , compilação , vinculação , execução e depuração . (O editor também está aprendendo sobre esses conteúdos, então não posso ajudá-lo a explicar esta parte do conteúdo. Se você estiver interessado, o editor irá apresentar um livro para você aqui: "Autocultivo do Programador - Link, Carregamento e Biblioteca " " . Este livro explica em detalhes o papel dessas cinco etapas. Depois que o editor terminar de ler, com certeza farei um blog para explicar e analisar.)


2. O primeiro programa em linguagem C


************************************************** ************************************************** ***  

       Depois de entendermos o que é a linguagem C, precisamos entender como usar o ambiente de desenvolvimento integrado para completar o primeiro programa em linguagem C. Abaixo, a maioria das pessoas não usará o ambiente de desenvolvimento integrado quando aprenderem a linguagem C pela primeira vez . O editor também mostrará como usar o VS2019, porque outros compiladores são muito antigos. Veja a imagem abaixo para dar o primeiro passo!

************************************************** ************************************************** ****

************************************************** ************************************************** ***  

       No estudo de linguagens de computação, existe uma piada que é "olá mundo" , porque basicamente o primeiro programa em linguagem C de todo mundo começa com "olá mundo", então para um programa tão simples, podemos aprender com ele o que?

************************************************** ************************************************** ***  

#include <stdio.h>
int main()
{
    printf("hello world\n");
    return 0;
}

       Em primeiro lugar , pode-se saber que todos os caracteres da linguagem C são caracteres ingleses . Em segundo lugar , todos os códigos da linguagem C começam na primeira linha da função principal . A função principal é o ponto de entrada do programa. Existe apenas uma função principal em um projeto . A função printf no código é uma função que vem com o compilador e pode ser usada diretamente. Finalmente , <stdio.h> é o arquivo de cabeçalho e o arquivo .c é o arquivo de origem. Ao usar uma função, consulte o arquivo de cabeçalho correspondente.

       Finalmente, vamos falar sobre a função principal : Existem três maneiras de escrever a função principal . A primeira é int main() (esta é a mais simples e mais comumente usada) ; a segunda é  int main(void). Desta forma de escrita indica claramente que a função principal não recebe parâmetros ; o terceiro tipo é int main (int argc, char* arr[]). Quando escrito assim, dois parâmetros são enviados para main(), e um parâmetro descreve o comando O número de parâmetros de linha, um é uma matriz na linha de comando, geralmente chamada de argv, e os parâmetros da linha de comando são todos strings . Consulte este link para obter detalhes: 【Parâmetros da linha de comando_Enciclopédia Baidu】 


 3. Tipo de dados


************************************************** ************************************************** ***  

Os tipos de dados da linguagem C são: char ( tipo de dados de caractere )           short ( inteiro curto )

                                   int ( tipo inteiro )                            long ( tipo inteiro longo )

                                   long long ( um tipo inteiro mais longo )     float ( um número de ponto flutuante de precisão simples )                                                                double ( um número de ponto flutuante de precisão dupla ).

************************************************** ************************************************** ***  

       Antes de compreender os tipos de dados, vamos primeiro explorar por que precisamos escrever um programa ? É usar programas para resolver alguns problemas da vida. Na vida real, nossos vários dados têm muitos tipos diferentes , para expressar mais abundantemente vários valores da vida , muitos tipos de dados são definidos em programas em linguagem C.

       Qual é o tamanho de cada tipo?

************************************************** ************************************************* **** ***         Aqui está uma unidade comum em computadores: bit (bit), byte (byte), KB, MB, GB, TB, PB . A conversão de unidades é: 1 byte = 8 bits

                                         1 KB = 1024 bytes

                                         1 MB = 1.024 KB

                                         1 GB = 1024 MB

                                         1 TB = 1024 GB

                                         1PB = 1.024 TB. 

************************************************** ************************************************** ***  


4. Variáveis, constantes


       Na vida, alguns valores são constantes (como: pi , sexo , número de identificação , tipo sanguíneo , etc.) , e alguns valores são variáveis ​​(como: idade , peso , salário, etc.) , e o são introduzidos conceitos de variáveis ​​e constantes .

Primeiro, vamos falar sobre variáveis :


4.1 Como definir variáveis


A sintaxe é : tipo + nome . código mostrado abaixo:

int age = 150;
float weight = 45.5f;  //浮点数默认为双精度浮点数,在后面加个f,说明是单精度浮点数类型
char ch = 'w';

4.1.1 Nomeando variáveis


************************************************** ************************************************** ***  

As regras básicas são as seguintes:

1) Só pode consistir em letras (incluindo maiúsculas e minúsculas) , números e sublinhados ;

2) Não é possível começar com um número;

3) O comprimento não pode exceder 63 caracteres (isto é puramente arrogante e desnecessário);

4) Distinguir entre maiúsculas e minúsculas ;

5) Palavras-chave não podem ser usadas em nomes de variáveis;

6) O nome da variável é o mais significativo (lembrando-nos de entender algumas palavras em inglês).

************************************************** ************************************************** ***  


4.2 Classificação das variáveis


       As variáveis ​​​​são divididas em variáveis ​​​​locais e variáveis ​​​​globais.Quando a variável global e a variável local têm o mesmo nome , a variável local tem precedência .


4.3 Uso de variáveis


#include <stdio.h>
int main()
{
    int num1 = 0;
    int num2 = 0;
    int sum = 0;
    printf("请输入两个操作数:>");
    scanf("%d %d", &num1, &num2);
    sum = num1 + num2;
    printf("sum = %d\n", sum);
    return 0;
}

       Ao compilar vs, descobriremos que teremos 4.996 avisos aqui .

       Por que esse aviso aparece? Isso ocorre porque a função de entrada em vs é definida por outros como scanf_s e não é seguro usar a função scanf .                                                                                                                                   

Então, como eliminar esse aviso? (Existem três métodos no total)

       Em primeiro lugar, o primeiro método é muito simples, que consiste em alterar diretamente scanf para scanf_s , porque a função scanf_s é fornecida por vs, então vs não reportará um erro.Este método é simples e rápido, mas também tem deficiências. O código escrito desta forma não possui portabilidade e não pode ser usado diretamente em outro software de compilação após copiar e colar diretamente. Então nosso segundo método é necessário.

       No segundo método, usar o código #pragma warning(disable:4996) invalidará o erro de aviso de número 4996 e vs não se importará se o seu código está correto. No entanto, este método precisa ser escrito sempre que um projeto é criado, o que é complicado.

       Finalmente, o terceiro método é de uma vez por todas . Primeiro, você precisa encontrar um arquivo chamado newc++file.cpp em sua pasta vs, escrever #define _CRT_SECURE_NO_WARNINGS no arquivo, salvá-lo e fechá-lo. Quando você abrir vs e criar um novo projeto, esta linha de código aparecerá automaticamente na primeira linha, o que efetivamente resolve nossos problemas de uma vez por todas.


4.4 Escopo e ciclo de vida das variáveis


4.4.1 Escopo


       O escopo é um intervalo , que é um conceito de programação. De modo geral, o nome usado em um trecho de código nem sempre é válido , e o intervalo de código que limita a disponibilidade do nome é o escopo do nome .

A seguir está o resumo do escopo do editor: 

1) O escopo de uma variável local é o escopo local no qual a variável reside .

2) O escopo das variáveis ​​globais é todo o projeto


4.4.2 Ciclo de vida


       O ciclo de vida é um período de tempo , e o ciclo de vida de uma variável é o período de tempo entre a criação da variável e a destruição da variável .

1) O ciclo de vida das variáveis ​​locais é: o ciclo de vida começa ao entrar no escopo e termina ao sair do escopo .

2) O ciclo de vida das variáveis ​​globais é: o ciclo de vida de todo o programa .

 A seguir está o resumo do editor sobre o ciclo de vida:

Como entender o programa? (Não se preocupe com essa fofura, explicarei esse conteúdo separadamente no editor mais tarde)

       Ao criar um projeto, podemos criar vários arquivos de origem. Por exemplo, ao declarar símbolos externos: "extern" , variáveis ​​globais definidas em um arquivo de origem podem ser usadas em outro arquivo de origem. Como mostrado abaixo:

 Então vamos falar sobre constantes :


4.5 Constantes


As constantes na linguagem C são divididas nos seguintes tipos : constantes literais , variáveis ​​constantes modificadas por const , constantes identificadoras definidas por #define e constantes de enumeração

O editor abaixo irá levá-lo para analisar um por um: 


4.5.1 Constantes literais


       Constantes literais não têm nada a dizer, apenas escreva o valor diretamente;


4.5.2 variáveis ​​constantes modificadas const


       A variável constante modificada por const na linguagem C restringe apenas a variável no nível gramatical e não pode ser alterada diretamente, mas ainda é uma variável em essência, por isso é chamada de variável constante.

Por que a modificação const é uma variável constante na linguagem C?

       Porque na linguagem C , se os colchetes na matriz se referirem a uma variável constante modificada por const, um aviso aparecerá quando o código for compilado, mas em C++ , a variável modificada por const é considerada uma constante.


4.5.3 #define constantes de identificador definidas


       Identificadores definidos por #define podem ser usados ​​em arrays.


4.5.4 Constantes Enum


       As constantes de enumeração começam em 0 por padrão e são incrementadas em 1 por sua vez.


5. String + caractere de transferência + comentário


5.1 Sequência


Não existe tipo de string na linguagem C        e o tipo de string pode ser armazenado em uma matriz de caracteres .

       Uma sequência de caracteres entre aspas duplas, como "olá mundo", é chamada de string literal ou, para abreviar , string . A marca final da string é um caractere de escape '\ 0'. Ao calcular o comprimento da string, \0 é a marca final, sem contar o conteúdo da string.

char arr[] = "hello world";
char arr[] = {'h','e','l','l','t'};  //最后输出该数组时会出现乱码的情况
char arr[] = {'h','e','l','l','t','\0'};

       No array que define a string, \0 precisa ser adicionado no final do array para indicar ao compilador que é o fim da string .


5.2 Caracteres de escape


       Como o nome sugere, o caractere de escape serve para alterar o significado original para evitar que o compilador entenda mal o significado de alguns símbolos quando eles são escritos juntos. A seguir, vamos apresentar alguns caracteres de escape comumente usados .

       Os caracteres são codificados no armazenamento do computador. O intervalo de valores do código ASCLL é: 0-127, que foi posteriormente expandido para 0-255.

A seguir está uma pergunta clássica: (A resposta a esta pergunta é 14)

#include <stdio.h>
int main()
{
    printf("%d\n", "c:\test\628\test.c");
    return 0;
}

       Nessa questão, temos que tomar cuidado com essas armadilhas: 1) Caracteres de escape , pois não possuem '\' escrito nos caracteres de escape, portanto devem ser tratados como caracteres . 2) Este é o caractere de escape octal , porque lhe dará um 8, mas o número 8 não aparecerá em octal .


5.3 Comentários


       Esta parte é relativamente simples. No mundo dos programadores, às vezes o código é redundante. Algumas partes do código são difíceis de entender e precisam ser comentadas ao lado. Às vezes, o código desnecessário precisa ser excluído. , você também pode comentar se você não quiser excluí-lo.

Existem dois tipos de comentários : um é o comentário no estilo da linguagem C (geralmente não usado): /* */ , o outro é o comentário no estilo C++ : // .


6. Selecione declarações


       A instrução if else é uma estrutura de seleção em linguagem C.


7. Instruções de loop


       Existem três formas de instruções de loop : while() , for() ,  do while() .

       Eles têm algumas diferenças que os tornam aplicáveis ​​a diferentes cenários . Se o número de loops for conhecido, use um loop for . Se o número de loops for desconhecido, use um loop while . Se quiser fazer um loop uma vez, use um loop do while. .


8. Função


       Em matemática , as funções descrevem o relacionamento entre variáveis . Na linguagem C , usamos funções para realmente definir um relacionamento .

#include <stdio.h>
//函数的定义和声明
int ADD(int x, int y)
{
    return x + y;
}
int main()
{
    int a = 0, b = 0;
    int sum = 0;
    scanf("%d %d", &a, &b);
    //函数的调用
    sum = ADD(a, b);
    printf("%d\n", sum);
    return 0;
}
    

       As características das funções são simplificação e reutilização de código .


9. Matriz


       Na linguagem C, um array é usado para armazenar uma coleção de elementos do mesmo tipo .


9.1 Definição de matriz


       Matrizes podem ser inicializadas e inicializadas de forma incompleta .

Inicialização completa: int arr[4] = {2,3,4,5};

Inicialização incompleta: int arr[4] = {0};


9.2 Subscritos de array


       A linguagem C estipula que cada elemento do array possui um subscrito , e o subscrito começa em 0. O array também pode ser acessado através do subscrito.


9.3 Uso de matrizes


#include <stdio.h>
int main()
{
    int arr[10] = {0};
    //利用循环 输入 输出
    for(int i = 0; i < 10; i++)
    {
        scanf("%d", &arr[i]);
    }
    for(int i = 0; i < 10; i++)
    {
        printf("%d ", arr[i]);
    }
    printf("\n");
    return 0;
}

10. Operador


10.1 Operadores aritméticos

+ - * /%

10.2 Operadores de turno

>> <<

10.3 Operadores de bits

& ^ |

10.4 Operador de atribuição

= += -= *= /= ^= |= >>= <<=    

10.5 Operadores unários

! Operador inverso lógico Na linguagem C, 0 representa falso e diferente de 0 representa verdadeiro.

sizeof O tipo comprimento do operando (em bytes) É o menos parecido com um operador, então lembre-se

-- Prefixo--, Postfix-- O prefixo é para adicionar 1 primeiro e depois usá-lo; o postfix é para usá-lo primeiro e depois adicionar 1

++ prefixo ++, postfix ++ prefixo, postfix depende da posição do símbolo, adicione 1 você mesmo, não importa       

10.6 Operadores relacionais

> >= < <= != ==

10.7 Operadores lógicos

&& lógico E tudo verdadeiro é verdadeiro

|| OU lógico Todo falso é falso

Aqui me lembro de uma pergunta de um amigo:

       Fiquei confuso quando vi esta pergunta porque as opções bec pareciam erradas, mas não estavam. Porque a opção c envolve alguns pontos de conhecimento que não conheço, porque existem curtos-circuitos lógicos.Na linguagem C, quando realizamos operações, precisamos otimizar o código para evitar que o programa sobrecarregue as operações. No programa, porque a||(b = c) é uma operação lógica, por que existe um curto-circuito lógico? Para reduzir o valor do cálculo do programa, ao realizar esta operação lógica, a linguagem C adota o método de manter a operação lógica original correta enquanto simplifica a operação ao não calcular a operação subsequente quando o valor exato da expressão tiver sido determinado .

       Na operação OR, se a for verdadeiro, não importa qual seja o valor subsequente, não precisamos calculá-lo. Como o resultado do programa já é conhecido, devemos realizar um curto-circuito lógico e então não calcular b = c, então c não é calculado. Atribuído a b, b ainda é igual ao valor original. Se a for falso, significa que os resultados subsequentes podem afetar todo o resultado, portanto o curto-circuito lógico não pode ser executado.

10.8 Operadores condicionais

exp1? exp2: operador ternário exp3, se 1 for verdadeiro, então produza 2, caso contrário, produza 3

10.9 Expressões de vírgula

exp1, exp2, exp3, exp4 são calculados da esquerda para a direita e o resultado de toda a expressão é o valor da última expressão.

10. 10 Referências de subscritos, chamadas de função e membros de estrutura

[ ] () . ->  

11. Palavras-chave comuns

Essas palavras-chave comuns são divididas em: tipo, loop, ramificação, declaração, função, etc.;

Tipos:auto(自动),char,double,enum,float,int,long,short,signed,unsigned,union,void,sizeof,struct,typedef.

循环:break,continue,do while(),for,continue。

分支:switch,break,case,default,if else,goto.

Declaração: extern (declaração de variáveis ​​externas), registrador, estático, volátil.

Função: retornar.

11.1 Cadastro de palavras-chave

       É uma palavra-chave de registro.Variáveis ​​declaradas com registro são variáveis ​​de registro e são armazenadas em registros da CPU. Há uma grande diferença de velocidade entre variáveis ​​de registro e variáveis ​​comuns, afinal, a velocidade da CPU é muito maior que a velocidade da memória . Os registradores possuem duas características: uma é que possuem alta velocidade de operação e a outra é que não podem receber endereços . No entanto, o endereço das variáveis ​​nos registradores não pode ser obtido e o compilador reportará um erro.

11.2 Tipo de palavra-chave

       Como o nome sugere, typedef é uma definição de tipo, que deve ser entendida como renomeação de tipo . O objetivo é simplificar o código.

11.3 Palavra-chave estática

 Na linguagem C, static é usado para modificar variáveis ​​e funções .

Existem três usos:

1) Modificar variáveis ​​locais, chamadas de variáveis ​​locais estáticas;

2) Modificar variáveis ​​globais, chamadas de variáveis ​​globais estáticas;

3) As funções modificadas são chamadas de funções estáticas.

11.3.1 Modificar variáveis ​​locais

       Em programas e linguagens C/C++, a memória é dividida em três partes: área de pilha, área de heap e área estática.

       Uma variável local comum é criada ao entrar na função e destruída ao sair da função, porém, após ser modificada pela estática, a função de entrada já foi criada (porque na desmontagem, as variáveis ​​​​modificadas estáticas não possuem linguagem assembly). a função de saída não é destruída e a função é chamada várias vezes. =, compartilhe uma variável.

 Essência: Variáveis ​​locais comuns são colocadas na área da pilha e modificadas por estáticas e colocadas na área estática.

11.3.2 Modificar variáveis ​​globais

       Na linguagem C, cada arquivo .c é processado pelo compilador separadamente e as variáveis ​​globais possuem atributos de link externo.Este atributo determina que variáveis ​​globais podem ser usadas entre vários arquivos. Porém, após ser modificado por estático, o atributo de link externo da variável global é alterado para um atributo de link interno , de modo que a variável global só pode ser usada dentro deste arquivo e não pode ser usada em outros arquivos de origem.

11.3.3 Funções modificadas 

       Os atributos das funções são um tanto semelhantes às variáveis ​​globais. As funções também possuem atributos de link externo ( podem ser usados ​​entre arquivos ). Uma vez modificada por estática, a função só pode ser usada neste arquivo e não pode ser usada em outros arquivos de origem.

12. #define define constantes e macros 

12.1 #define define constantes de identificador

12.2 #define define macros

 13. Ponteiro

13.1 Memória

       A memória é uma memória particularmente importante em um computador , e os programas de um computador são executados na memória. Portanto, para usar a memória de forma eficaz, a memória é dividida em pequenas unidades de memória. O tamanho de cada unidade de memória é de 1 byte (porque o menor tipo de dados é o tipo char, e o byte do tipo char é 1 word . seção ), para poder acessar efetivamente cada unidade de memória, a unidade de memória é numerada, e esses números são chamados de endereço da unidade de memória.

       Memória e disco rígido devem ser claramente diferenciados.

       Em uma máquina de 32 bits, existem 32 linhas de endereço, cada linha de endereço é 0/1, o que significa que há 2 elevado a 32 endereços e ela pode gerenciar 4 GB de memória. Binário, octal, decimal e hexadecimal são expressões de valores numéricos.

Resumo: 1. A memória será dividida em unidades de memória em bytes;

           2. Cada unidade de memória possui um número, número = endereço = ponteiro;

           3. As variáveis ​​criadas em linguagem C realmente ocupam um espaço na memória;

           4. Quando &a, retire o endereço de byte menor entre os 4 bytes;

           5. Variáveis ​​de ponteiro armazenam endereços;

           6. a pode ser encontrado por meio de uma variável de ponteiro.

13.2 Tamanho das variáveis ​​ponteiro

       O tamanho da variável do ponteiro depende do tamanho do endereço. O endereço em uma plataforma de máquina de 32 bits é de 32 bits (ou seja, 4 bytes), e o endereço em uma plataforma de máquina de 64 bits é de 64 bits (ou seja, 8 bytes). .

 14. Estrutura

       Existe o conceito de array na linguagem C, mas o array é muito limitado e só pode armazenar dados do mesmo tipo. Mas na vida real, esses dados são relativamente complexos e não podem ser expressos com sucesso apenas usando arrays, então a linguagem C introduz essa estrutura para armazenar diferentes tipos de dados.

       Se você precisar de um determinado elemento na estrutura, será necessário usar o tipo de ponteiro correspondente ao elemento para obter o endereço.

Acho que você gosta

Origin blog.csdn.net/2301_77868664/article/details/131275623
Recomendado
Clasificación