A revisão final da linguagem C se concentrará nisso! Pegue o último trem de revisão, não desejo nenhum exame!

A linguagem C é um conhecimento básico necessário no estudo e na vida dos estudantes universitários contemporâneos, e é amplamente utilizada, especialmente agora que é o período de exame final.A seguir, um resumo do conhecimento da linguagem C para todos.

 

Capítulo Um Conhecimento Básico da Linguagem C

[Test site 1] Programa C

O programa escrito em linguagem C é denominado programa-fonte da linguagem C e o sufixo do arquivo do programa-fonte é ".c". Depois que o programa de origem é compilado, um arquivo-objeto com o sufixo ".obj" é gerado e o arquivo-objeto é conectado com várias funções de biblioteca para gerar um arquivo executável de ".exe". A linguagem C tem três estruturas básicas: estrutura de sequência, estrutura de seleção e estrutura de loop.

[Ponto de teste 2] função principal

Também conhecida como função principal, é o ponto de entrada do programa C. Main é seguido por um par de parênteses e um par de chaves. A parte delimitada pelas chaves é chamada de corpo da função principal. Um programa C é executado da função principal até o final do corpo da função principal, independentemente da posição da função principal em todo o programa. Cada programa tem uma e somente uma função principal, e outras funções atendem à função principal.

[Test site 3] Formato de armazenamento

O computador guarda os dados no computador na forma binária.O binário composto por 0 ou 1 é denominado bit (bit), oito bits constituem um byte (Byte), 1 Byte = 8 bits. Binário, octal e hexadecimal são convertidos em decimal por multiplicação, e decimal é convertido em binário, octal e hexadecimal por divisão. O local de armazenamento dos dados é seu endereço.

【Centro de teste 4】 Notas

É uma descrição do programa, que pode aparecer em qualquer local adequado do programa. O comentário termina com "", e entretanto nada será executado pelo computador. Os comentários não podem ser aninhados.

[Test site 5] Formato de escrita

Deve haver um ponto e vírgula após cada instrução, e o ponto e vírgula faz parte da instrução. Várias frases podem ser escritas em uma linha e uma frase pode ser escrita em várias linhas.

[Test Site 6] Identificador

É uma sequência de caracteres válidos para identificar um nome, que pode ser entendido como uma palavra em um programa C.

As regras de nomenclatura para identificadores são:

(1) Os identificadores podem consistir apenas em letras, números e sublinhados, e as letras diferenciam maiúsculas de minúsculas.

(2) O primeiro caractere do identificador deve ser uma letra ou sublinhado, não um número.

Os identificadores da linguagem C são divididos nas 3 categorias a seguir

(1) Palavras-chave. Eles têm um significado fixo no programa e não podem ser usados ​​para outros fins. Como int, for, switch, etc.

(2) Identificador pré-definido. Um identificador predefinido com um significado específico. Como definir, incluir, etc.

(3) Identificador do usuário. O identificador definido pelo usuário conforme necessário, está em conformidade com as regras de nomenclatura e não é o mesmo que a palavra-chave.

[Ponto de teste 7] Constantes e variáveis

Constante refere-se à quantidade cujo valor não pode ser alterado durante a execução do programa. As constantes são divididas em cinco tipos: constantes inteiras, constantes reais, constantes de caractere, constantes de string e constantes simbólicas. A quantidade cujo valor pode ser alterado durante a execução do programa é chamada de variável. Não há variáveis ​​de string na linguagem C. Use matrizes de caracteres para armazenar strings.

[Test site 8] Dados inteiros

As constantes inteiras têm três formas de representação: decimal, octal e hexadecimal, e não há forma binária. Uma constante octal inteira mais um dígito inicial 0, uma constante hexadecimal mais um 0X à esquerda, 8 não aparecerá em uma constante octal.

Variáveis ​​inteiras podem ser divididas em inteiro básico (int), inteiro curto (curto), inteiro longo (longo) e inteiro sem sinal (sem sinal). Um tipo inteiro básico ocupa 4 bytes. Consulte a página 9 do livro para o número de bytes ocupados por outros tipos de inteiros e a faixa de valores.

[Test site 9] Dados reais

Os dados reais têm duas formas de representação: forma decimal e forma exponencial. Compreenda a legitimidade do formulário de índice de julgamento.

Mantra: E deve ter um número antes de E e deve ser um número inteiro depois de E.

Variáveis ​​reais são divididas em precisão simples (float) e precisão dupla (dupla), e a precisão simples ocupa quatro bytes.

[Test site 10] Operações aritméticas

Existem cinco operadores aritméticos +, -, *, /,%. A operação de resto requer que o operando só possa ser do tipo inteiro, quando os operandos de ambos os lados do operador de divisão são do tipo inteiro, o resultado da operação também é do tipo inteiro, ou seja, a parte decimal é descartada.

[Test site 11] Conversão de tipo forçada

Converta um operando em um tipo especificado, o formato é (nome do tipo) expressão, preste atenção à posição dos parênteses.

[Test site 12] Atribuição

O operador de atribuição é "=", que é diferente da relação igual a "=". O formato da expressão de atribuição é: nome da variável = expressão, o lado esquerdo do operador de atribuição deve ser uma variável e a operação de atribuição é atribuir o valor da expressão do lado direito do operador de atribuição à variável esquerda.

O operador de atribuição composta é um operador composto de operadores aritméticos ou operadores bit a bit e operadores de atribuição, e domina o método de conversão de expressões de atribuição composta em expressões de atribuição. Por exemplo, n + = 100 pode ser transformado em n = n + 100.

[Test site 13] Adicionar e subtrair operações

O operador de adição "++" e o operador de subtração "-" são operadores unários e o operando deve ser uma variável. As operações de incremento e decremento são divididas em operações de prefixo e operações de pós-fixação. Os valores de suas expressões correspondentes são diferentes. Por exemplo, j = i ++; é equivalente a j = i; i = i + 1; e j = ++ i; Equivalente a i = i + 1; j = i ;.

Fórmula: Adicione antes de adicionar antes de usar, adicione depois de adicionar depois de usar primeiro.

【Centro de Teste 14】 Operação de vírgula

O operador vírgula tem a precedência mais baixa e pode formar várias expressões em uma nova expressão.

Capítulo 2 Estrutura da Sequência

[Ponto de teste 1] Operadores, expressões, declarações

O operando mais o operador constituem uma expressão, e a expressão mais um ponto-e-vírgula constitui uma declaração de expressão. O operando pode ser uma expressão, constante ou variável. Por exemplo, o operador de atribuição e o operando formam a expressão de atribuição, e a expressão de atribuição mais o ponto-e-vírgula podem formar a instrução de atribuição.

[Ponto de teste 2] Precedência do operador e ordem de combinação

Os operadores podem ser divididos em operadores unários, operadores binoculares e operadores ternários de acordo com o número de objetos que participam da operação. Os operadores elementares têm a prioridade mais alta, seguidos por operadores unários, operadores aritméticos, operadores relacionais, operadores lógicos (exceto negação lógica!), Operadores condicionais, operadores de atribuição e operadores de vírgula. A precedência dos operadores de bits é entre operadores aritméticos e operadores lógicos. A ordem de combinação é principalmente da esquerda para a direita e existem três da direita para a esquerda: operador unário, operador condicional e operador de atribuição.

[Ponto de teste 3] função printf

O formato é: printf (controle de saída, lista de saída). O controle de saída é colocado entre um par de aspas duplas, incluindo a descrição do formato e informações originais. A lista de saída contém vários itens de saída.

[Ponto de teste 4] Descrição do formato na função printf

% d corresponde ao tipo inteiro,% f corresponde ao tipo real de precisão única,% c corresponde ao tipo de caractere,% o corresponde ao tipo inteiro octal sem sinal,% x corresponde ao tipo inteiro hexadecimal sem sinal,% u corresponde ao tipo inteiro sem sinal,% e corresponde ao tipo exponencial e% s corresponde ao tipo string. Você pode adicionar um número entre% e o caractere de formato para controlar a largura dos dados e o número de casas decimais.

[Ponto de teste 5] função scanf

O item de entrada requer o caractere de endereço &. Ao usar o teclado para inserir vários dados, use um separador entre os dados. Delimitadores incluem caracteres de espaço, tabulações e retornos de carro, mas não incluem vírgulas.

[Test site] 6 Como trocar duas variáveis

Para usar variáveis ​​intermediárias, a declaração é: t = x; x = y; x = t ;.

Capítulo 3 Selecione a Estrutura

[Test site 1] Computação relacional

A linguagem C usa diferente de zero para representar a verdade lógica e 0 para representar a falsa lógica. Existem 6 operadores relacionais, a saber,>,> =, <, <=, ==,! =, Os primeiros quatro têm maior prioridade do que os dois últimos. A expressão relacional é 1 quando é verdadeira e 0 quando é falsa. Observe que a <b <c não é possível, ele pode ser representado por (a <b) && (b <c).

[Ponto de teste 2] Operações lógicas

Existem 3 operadores lógicos: AND lógico (&&), OR lógico (||), negação lógica (!). Preste atenção ao fenômeno de curto-circuito, como a ++ || b ++, se o valor da expressão a ++ for diferente de zero, a expressão b ++ não será executada.

[Testar site 3] se declaração

Pode aparecer sozinho ou pode combinar com outro. Se as instruções podem ser aninhadas, então o else é sempre combinado com o mais próximo, se este não corresponder ao else.

[Test site 4] Cálculo condicional

É o único operador ternário, o formato é: expressão 1? Expressão 2: expressão 3. Quando o valor da expressão 1 é diferente de zero, todo o valor da expressão é o valor da expressão 2 e quando o valor da expressão 1 é 0, todo o valor da expressão é o valor da expressão 3.

Mantra: verdadeiro antes e depois do falso

[Test site 5] declaração switch

Para a formatação e processo de execução, consulte a P33 do material didático, preste atenção na diferença entre a existência de break statement após cada caso. Observe também que as expressões entre parênteses após switch não podem ser reais e as expressões após case não podem ter variáveis.

Mantra: A tabela de comutação não é verdadeira e a tabela de casos não é alterada.

Capítulo 4 Estrutura de Loop

[Local de teste 1] Três estruturas de loop

As três estruturas de loop são: while, do-while, for. O formato e a ordem de execução das três estruturas são detalhados nas páginas 36, 39 e 40 do livro. Observe que deve haver dois pontos e vírgulas entre parênteses no loop for; o loop deve ter uma condição de fim, caso contrário, ele se tornará um loop infinito; o while () no final do loop do-while (); deve haver um ponto e vírgula depois disso.

【Test Center 2】 break e continue

Break é para encerrar todo o loop, e continue é para encerrar o loop atual mais cedo. A instrução break pode aparecer na estrutura do loop e na instrução switch, e continue aparece apenas na estrutura do loop.

[Ponto de teste 3] Aninhamento de loop

Ou seja, há loops no loop. O cálculo requer análise camada por camada. Geralmente, apenas dois níveis de aninhamento são examinados. Aninhamento de loop geralmente lida com matrizes bidimensionais.

[Ponto de teste 4] Revisão da estrutura cíclica

A estrutura em loop é o ponto-chave, a pontuação da prova escrita ronda geralmente os 13 pontos, é também uma prova obrigatória na prova de computador, o que é muito aplicável. Os alunos devem se concentrar na compreensão e praticar mais para compreender o domínio.

Capítulo 5 Operação de bits de dados de caracteres

[Test site 1] Constante de caractere

Uma constante de caractere é colocada entre um par de aspas simples. Uma constante de caractere pode conter apenas um caractere. 'Ab' é ilegal. Os espaços são frequentemente representados por '□'. Constantes de caracteres podem ser representadas por códigos ASCII correspondentes.Lembre-se: o código ASCII de '0' é 48, o código ASCII de 'A' é 65 e o código ASCII de 'a' é 97.

[Centro de teste 2] personagem de fuga

Em um par de aspas simples, uma barra invertida seguida por um caractere específico ou número octal ou hexadecimal constitui um caractere de escape. Por exemplo, '\ n' significa nova linha, '\ 101' ou '\ x41' significa o caractere'A 'com código ASCII 65.

[Ponto de teste 3] Os dados de caracteres podem ser convertidos em dados inteiros

Tal como: '0'-0 = 48'A' + 32 = 'a' char a = 65; printf ("% d% c", a, a); o resultado é 65A

Operador de bits [site de teste 4]

A linguagem C fornece 6 operadores bit a bit: negação bit a bit ~, bit a bit shift esquerda <<, bit a bit shift direita >>, bit a bit AND &, bit a bit exclusivo OR |, bit a bit OR ^. Em circunstâncias normais, a base deve ser convertida primeiro. As regras de operação de XOR: 0 XOR 1 obtém 1, 0 XOR 0 obtém 0, 1 XOR 1 obtém 0. Pode ser registrado como "o mesmo é 0, a diferença é 1".

[Ponto de teste 5] funções putchar e getchar

Pode ser usado para produzir ou inserir um único caractere. Essas duas funções são funções de biblioteca no arquivo stdio.h.Elas são funções printf e scanf simplificadas.

 

Capítulo 6 Funções

[Ponto de teste 1] Definição da função

Uma função é um bloco de programa com uma determinada função. A primeira parte da função é: tipo de função nome da função (parâmetro formal 1 do tipo 1, parâmetro 2 formal do tipo 2, ...). Nenhuma outra função pode ser definida na definição da função, ou seja, as funções não podem ser aninhadas. O tipo de função padrão é tipo int.

A forma geral de definição de função:

  (1) Nome da função do designador de tipo ()

  {

  Parte da declaração

  Declaração

  }

  (2) Nome da função do designador de tipo (lista de parâmetros formais)

  {

Parte da declaração

  Declaração

  }

[Test site 2] Funções de biblioteca

O comando include deve ser incluído ao chamar as funções de biblioteca padrão da linguagem C. A linha de comando include começa com #, seguido por um arquivo de cabeçalho entre "" ou <> com o sufixo ".h". A linha que começa com # é chamada de linha de comando de pré-processamento de compilação. O pré-processamento de compilação não é uma instrução da linguagem C, sem um ponto-e-vírgula, e não leva em conta o tempo de execução.

[Ponto de teste 3] O valor de retorno da função

A função retorna um valor por meio da instrução return e o tipo de valor retornado é o mesmo que o tipo de função. A instrução de retorno é executada apenas uma vez e a função sai após a execução ou o corpo da função termina.

Espera-se que a função de chamada principal possa obter um certo valor por meio da chamada de função. (1) O valor de retorno da função é obtido por meio da instrução return na função. (2) O tipo do valor da função; (3) Se o tipo do valor da função for diferente do valor da expressão na declaração de retorno, o tipo de função deve prevalecer. (4) Se não houver instrução de retorno na função de chamada, ela não traz de volta um determinado valor de que o usuário precisa. A função não traz de volta um valor, mas simplesmente não traz de volta um valor útil e traz de volta um valor incerto. (5) Se você não precisar trazer nenhum valor de volta, use void.

[Ponto de teste 4] Declaração de função

As funções devem ser "definidas primeiro e depois chamadas" ou "declaradas primeiro e depois chamadas e, em seguida, definidas". A declaração da função deve ter o nome da função, tipo de valor de retorno da função, tipo de parâmetro da função, mas não necessariamente o nome do parâmetro formal.

[Ponto de teste 5] Chamada de função

O programa é executado de cima para baixo. Quando o nome da função é encontrado, o valor é passado para a função de chamada. Quando o programa obtém o valor de retorno ou a função de chamada termina, ele é executado sequencialmente.

[Ponto de teste 6] Parâmetro de função e transferência de valor

Os parâmetros formais são chamados de parâmetros formais, que são os parâmetros entre parênteses após o nome da função ao definir uma função. Os parâmetros reais são chamados de parâmetros reais, que são os parâmetros entre parênteses após o nome da função ao chamar a função. Os parâmetros reais e os parâmetros formais ocupam diferentes unidades de armazenamento. O parâmetro real passa o valor unidirecionalmente para o parâmetro formal.

A diferença entre "passar por valor" e "passar por endereço": ao passar um valor, a alteração do parâmetro formal não altera a alteração do parâmetro atual. Se o endereço for passado, a alteração do parâmetro formal pode alterar o valor correspondente ao parâmetro atual.

Explicação dos parâmetros formais e parâmetros reais:

  (1) Os parâmetros formais especificados na função de definição não ocupam a unidade de armazenamento na memória quando não há chamada de função.A memória é alocada apenas quando ocorre a chamada.

  (2) O parâmetro real pode ser uma constante, variável ou expressão; às vezes, o endereço é passado;

  (3) Ao ser definido, o parâmetro formal deve especificar o tipo;

  (4) Os tipos de parâmetros formais de participação real devem ser os mesmos ou a atribuição compatível;

  (5) A linguagem C estipula que a transferência de dados do parâmetro real para a variável do parâmetro formal é "transferência de valor", ou seja, transferência unilateral. Apenas o parâmetro real é passado para o parâmetro formal, mas não do formal parâmetro para o parâmetro real.

[Ponto de teste 7] Chamada recursiva de função

Uma função chama a si mesma direta ou indiretamente, chamada de chamada recursiva de uma função. As chamadas recursivas devem ter uma condição clara para encerrar a recursão. Ao fazer perguntas recursivas, você pode anotar as etapas recursivas passo a passo, e não revertê-las.

Método de chamada 1. Declaração de função; 2. Expressão de função; 3. Parâmetro de função.

A declaração da função chamada:

  Condições para uma função chamar outra função:

  1. A função a ser chamada primeiro deve ser uma função existente;

  2. Se você usa funções de biblioteca, geralmente deve usar o comando #include no início deste arquivo para "incluir" as informações necessárias ao chamar funções de biblioteca relacionadas neste arquivo. O arquivo .h é o sufixo usado para arquivos de cabeçalho.

  3. Se você usar uma função definida pelo usuário, e a função estiver no mesmo arquivo que a função que a usa, você deve geralmente declarar a função chamada na função de chamada.

  4. Se a definição da função a ser chamada aparecer antes da função de chamada, não há necessidade de declará-la.

  5. Se a declaração da função foi feita fora da função antes de todas as definições de função, não há necessidade de declarar mais funções chamadas em cada função de chamada principal.

[Test site 8] Funções de biblioteca necessárias

sqrt () função aritmética de raiz quadrada, fabs () função de valor absoluto, função pow () potência, função sin () seno

Capítulo 7 Dicas

[Ponto de teste 1] Variável de ponteiro

Variáveis ​​de ponteiro são usadas para armazenar endereços, enquanto variáveis ​​gerais são usadas para armazenar valores. Uma variável de ponteiro pode apontar para qualquer tipo de dados, mas não importa para quantos bytes ela aponte, uma variável de ponteiro ocupa quatro bytes.

[Ponto de teste 2] A definição de variáveis ​​de ponteiro

O formato é: nome do tipo * nome da variável do ponteiro. Ponteiro bidimensional int ** p; pode ser entendido como o tipo de tipo base (int *).

[Ponto de teste 3] Inicialização de variáveis ​​de ponteiro

A variável ponteiro deve ser inicializada antes de ser usada e um endereço específico é atribuído a ela, caso contrário, haverá efeitos colaterais quando ela for referenciada. Se ela não apontar para nenhum dado, o "valor nulo" NULL é atribuído.

[Ponto de teste 4] Referência a variáveis ​​de ponteiro

& É um operador de endereço, * é um operador de acesso indireto e são dois operadores mutuamente inversos. Adicionar o operador de acesso indireto antes do nome da variável de ponteiro é equivalente ao valor para o qual ele aponta.

[Ponto de teste 5] Cálculo do ponteiro

A diferença entre * p ++ e (* p) ++: * p ++ é a mudança de endereço, (* p) ++ é a mudança de dados apontada pela variável de ponteiro. Uma variável de ponteiro mais um inteiro não é uma adição matemática simples, mas vários endereços são movidos continuamente. Quando dois ponteiros apontam para a mesma matriz, eles podem comparar os tamanhos e realizar operações de subtração.

Nota: array de ponteiro e array de ponteiros

Esses dois conceitos são minhas próprias conclusões, mas na verdade estou um pouco confuso. Um ponteiro de array é um ponteiro para um grupo de índices e um array de ponteiros é um array de ponteiros.

Matriz de ponteiros: a matriz de ponteiros é fácil de entender, ou seja, a matriz de ponteiros, que é definida da seguinte forma na linguagem C:

int * p [10];

A definição especifica uma matriz de 10 ponteiros para int. 

Ponteiro de array: o ponteiro para um array, como o nome indica, refere-se a um ponteiro para um array. A definição na linguagem C é como

int (* p) [10];

Um ponteiro para um objeto de matriz, que é uma matriz com 10 elementos inteiros. 

Nota: Ao executar P + 1, o número de bytes movidos por p não é o número de bytes de int, mas o número de bytes de todo o array. Conforme definido acima, quando p + 1 é executado, sizeof (int) * 10 = 40 bytes são movidos. 

Capítulo 8 Arrays

[Test site 1] Definição de array

Uma matriz é uma coleção de dados do mesmo tipo, e esses dados são chamados de elementos da matriz. O formato é: nome do tipo nome da matriz [expressão constante]. O número de bytes ocupados pelo array é o produto do número de elementos e do número de bytes ocupados pelo tipo base.

[Ponto de teste 2] Inicialização da matriz

O comprimento da primeira dimensão pode ser omitido e as outras dimensões devem ser escritas. int a = {1,2}; legal, int a [3] = {2,3,4}; legal, int a [2] = {2,3,4}; ilegal. O valor do elemento inicializado da matriz é 0 por padrão, e o valor do elemento não inicializado é aleatório. Por exemplo, em int a [5] = {0,1,2} ;, o valor do elemento a [4] é 0; em int a [5] ;, o valor do elemento a [4] é um aleatório incerto número

[Test site 3] Referência dos elementos

O índice dos elementos da matriz começa em 0 e termina no comprimento da matriz menos 1. Portanto, o último elemento da matriz em int a [5]; é a [4]. Para tratar os elementos do array como um todo, você pode tratar a [4] como uma variável inteira.

[Test site 4] Matriz bidimensional

A matriz a [2] [3] = {1,2,3,4,5,6}; contém 6 elementos, 2 linhas e 3 colunas. A primeira linha é uma linha [0] e a segunda linha é uma linha [1]. A [0] e a [1] são chamados de primeiro endereço da linha e são constantes de endereço. * (a [0] +1) é o primeiro elemento da primeira linha salta uma coluna para trás, ou seja, o valor do elemento a [0] [1] é 2, * (a [0] +3) é o primeiro da primeira linha Cada elemento salta três para trás, ou seja, o valor do elemento a [1] [0] é 4.

[Test site 5] Ponteiro de linha

É uma variável de ponteiro que ocupa quatro bytes. O ponteiro de linha aponta para uma linha de dados contínuos, na forma: int (* p) [2] ;, p só pode armazenar o primeiro endereço de uma matriz unidimensional contendo dois elementos inteiros. Observe que os parênteses ao redor de (* p) não podem ser omitidos, caso contrário, ele se torna uma matriz de ponteiro, que é uma coleção de vários elementos de ponteiro.

[Test site 6] Nome da matriz

O nome da matriz é o primeiro endereço da matriz. Os nomes de array não podem ser citados individualmente e todos os elementos não podem ser representados por um nome de array. O nome da matriz é uma constante de endereço e não pode ser atribuído ao nome da matriz, portanto, ++ está errado. Mas o nome da matriz pode ser usado como um endereço e um inteiro é adicionado para obter um novo endereço.

[Test site 7] Conversão da forma elementar

Mnemônico: "Lei de Despir" a [2] torna-se * (a + 2), a [2] [3] torna-se * (a + 2) [3] e então torna-se * (* (a + 2) +3) .

Capítulo 9 Strings

[Test site 1] Constantes e expressões de string

Uma constante de string é uma string de caracteres entre aspas duplas, como "ABC". Ao armazenar uma string de caracteres, o sistema adicionará automaticamente um valor nulo '\ 0' ao seu final, e o valor nulo também ocupa um byte, ou seja, a string de caracteres "ABC" precisa de quatro bytes.

[Test Center 2] Matriz de caracteres

A linguagem C não tem variáveis ​​de string e só pode usar matrizes de caracteres para armazenar strings. O tamanho do array deve ser um elemento a mais do que a string mais longa que ele realmente armazenará, para armazenar '\ 0'.

[Test site 3] Atribuição de string

Você pode usar a seguinte forma de atribuição: char str = ”Hello!”; Ou char * p; p = ”Hello!” ;, mas não pode usar a seguinte forma: char str [10]; str = ”Hello”; porque str É uma constante de endereço e não pode ser atribuída.

[Test Center 4] Entrada e saída de string

Você pode usar as funções scanf e printf, como scanf ("% s", str) ;, você também pode usar as duas funções gets e puts que lidam com strings, e também pode atribuir valores ao elemento da matriz de caracteres por elemento, mas você deve atribuí-lo no final A '\ 0'. Use a função gets para receber espaços e use a função puts para gerar uma nova linha no final.

[Ponto de teste 5] Função string

Quatro funções de string para dominar: função de cópia de string strcpy (), função de comprimento de string strlen (), função de link de string strcat (), função de comparação de string strcmp (). Para usar essas funções, inclua o arquivo de cabeçalho "string.h" na seção de pré-processamento.

O comprimento da string deve ser menor que o comprimento da matriz de caracteres, por exemplo: char str [10] = ”Hello”; o valor de sizeof (str) é 10 (comprimento da matriz), e o valor de strlen (str ) é 5 (comprimento da string). Essas funções são comumente usadas no exame. Você deve ser proficiente na aplicação dessas funções.

Capítulo 10 Estrutura e União

[Test site 1] Descrição do tipo de estrutura

A estrutura é uma coleção de vários tipos de dados. O formato de descrição do tipo de estrutura é o seguinte: nome do tipo de estrutura {tipo 1 nome do membro 1; tipo 2 nome do membro 2; ……} ;, toda a parte acima é um dado type, e o tipo integral int tem o mesmo status. Você pode usar typedef para substituir o tipo de estrutura por um identificador curto de apenas algumas letras.

[Ponto de teste 2] Definição de variáveis ​​de estrutura

Uma variável de estrutura é uma variável definida pelo tipo de estrutura da descrição, que não é igual ao tipo de estrutura. O número de bytes ocupados por uma variável de estrutura é a soma do número de bytes ocupados por todos os seus membros. Por exemplo, struct stu {char name [10]; int age;} a, b; indica que duas variáveis ​​de estrutura a, b são definidas, cada uma delas ocupando 14 bytes. a, be int i, j; variáveis ​​i, j na mesma posição.

[Ponto de teste 3] Citação de membros da estrutura

Existem três maneiras de se referir a membros: (1) nome da variável de estrutura. Nome do membro; (2) nome da variável de ponteiro -> nome do membro: (3) (* nome da variável de ponteiro). Nome do membro. O ponto (.) É chamado de operador de membro e a seta (->) é chamada de operador de indicação de estrutura.

[Test site 4] Lista vinculada

A lista vinculada é composta de nós, e um nó é uma variável de estrutura. Cada nó pode ser dividido em duas partes: campo de dados e campo de ponteiro.O campo de dados é usado para armazenar os dados a serem armazenados, e o campo de ponteiro é usado para apontar para o próximo nó. A lista encadeada é um ponto difícil do exame, será testada na linguagem C e na parte básica pública, é necessário compreender e dominar.

[Test site 5] Comunidade

O formato de uso de uma união é semelhante ao de uma estrutura.A palavra-chave definida pela união é união, e o número de bytes ocupados pela união é aquele com o maior número de bytes entre todos os membros.

Nota:

A definição do tipo de estrutura descreve a organização da estrutura e não aloca memória

Você pode definir o tipo primeiro e, em seguida, definir o conteúdo / agrupar

Observe que há um ponto e vírgula ";" após a definição, que é diferente de uma função

Use uma estrutura sem nome para definir diretamente uma variável, que só pode ser definida uma vez

A definição da estrutura pode ser aninhada

Variáveis ​​de estrutura não podem ser referenciadas como um todo, mas podem ser atribuídas

(* Nome do ponteiro da estrutura). Nome do membro = nome do ponteiro da estrutura -> nome do membro = nome da variável da estrutura. Nome do membro

A união é muito semelhante à estrutura, mas apenas um membro da variável união existe a qualquer momento

Tipos de enumeração, variáveis ​​de enumeração são tratados como inteiros, permitindo-lhes participar em várias operações aritméticas.

typedef define o tipo, nenhum novo tipo de dados é criado

Capítulo 11 Documentos

[Test site 1] Ponteiro de tipo de arquivo

O ponteiro do arquivo é um ponteiro para o tipo de estrutura e o formato da definição é: FILE * nome da variável do ponteiro. Ao usar arquivos, você precisa definir primeiro o ponteiro do arquivo.

[Centro de teste 2] Arquivos de texto e arquivos binários

A forma de texto armazena o código ASCII de caracteres e a forma binária armazena os dados binários dos dados. Por exemplo, se "100" estiver em formato de texto, ele armazenará o código ASCII (00110001 00110000 00110000) dos três caracteres '1', '0' e '0'. Se estiver em formato binário, converta 100 em binário (01100100).

[Test Center 3] Abra o arquivo

A forma de abertura do arquivo é a seguinte: FILE * fp; fp = fopen ("c: \\ lab.c", "rb") ;. A primeira parte da função fopen é o nome do arquivo e a última parte é como o arquivo é usado. Consulte a página 127 do livro para o método de abertura, onde r significa leitura, w significa escrever, a significa adicionar eb significa bits binários.

[Test site 4] Função de arquivo

Determine o final da função feof do arquivo, mova a função fseek da posição do ponteiro do arquivo, obtenha a função ftell da posição do arquivo, mova a posição do arquivo para o início da função retroceder, entrada e saída de caracteres do arquivo função fgetc e função fputc, entrada de arquivo output fscanf function e fprintf function, file string input Output fgets function e fputs function, ler e escrever arquivos binários, fread function e fwrite function.

A função acima requer o conhecimento do formato a ser usado e se ele é usado para arquivos binários ou arquivos de texto, revise cuidadosamente este capítulo do arquivo do livro-texto e não confunda essas funções de arquivo durante o exame.

Nota:

Os arquivos podem ser divididos em arquivos de texto e arquivos binários de acordo com a organização dos dados

Os arquivos podem ser divididos em arquivos sequenciais e arquivos aleatórios de acordo com seus métodos de acesso

A identificação do arquivo inclui: (1) caminho do arquivo; (2) nome do arquivo principal; (3) sufixo do arquivo

Abrir arquivo, ler e gravar arquivo, fechar arquivo (exemplo: fp = fopen ("nome do arquivo", "uso do arquivo");)

Capítulo 12 Discussão em profundidade

[Ponto de teste 1] Pré-processamento de compilação

Qualquer linha que comece com # é uma linha de comando de pré-processamento de compilação, e o pré-processamento de compilação não adiciona um ponto-e-vírgula, o que não leva em conta o tempo de execução. A substituição de macro é apenas uma substituição de texto simples, como #define f (x) (x) * (x) e #define f (x) x * x ao substituir f (2 + 2), há uma diferença, o anterior expande para (2 +2) * (2 + 2), o último é 2 + 2 * 2 + 2.

Se houver #include "f1.c" no arquivo de origem f2.c, pode-se entender que o arquivo de origem f1.c está incluído em f2.c como está, de modo que f1.c e f2.c são mesclados em uma compilação de programa C. Portanto, um programa C deve ter uma função principal, mas um arquivo-fonte C pode não ter uma função principal.

[Ponto de teste 2] Escopo do identificador

Uma variável local é uma variável definida em uma função ou instrução composta, e seu escopo está na função em que é definida. Existem três tipos de variáveis ​​locais: automático automático, registro de registro e estático estático.

Variáveis ​​automáticas são criadas e desaparecem com o uso da função; variáveis ​​de registro são alocadas na cpu sem um endereço de memória; variáveis ​​estáticas ocupam uma unidade de armazenamento fixa e não são liberadas durante a execução do programa até o final do programa.

Uma variável global é uma variável definida fora de uma função. O escopo vai da posição onde é definida até o final de todo o arquivo de origem, e o tempo de vida é todo o período de execução do programa. Variáveis ​​globais são variáveis ​​estáticas.

[Test site 3] Alocação dinâmica de armazenamento

malloc (tamanho) é usado para criar uma área de armazenamento de bytes de tamanho contínuo e o tipo de valor de retorno é do tipo void *. A função malloc é freqüentemente usada para criar nós de listas vinculadas dinamicamente, como int * p; p = (int *) malloc (sizeof (int)) ;.

calloc (n, tamanho) cria n espaços de armazenamento do mesmo tipo, que podem ser entendidos como n mallocs.

free (p) libera unidades de armazenamento alocadas dinamicamente.

 

Se você quiser melhorar sua habilidade de programação, aprenda a linguagem C e programação C ++! Ultrapassagem em curva, um passo mais rápido!

[ Linguagem C C ++ aprendendo círculo de pinguim ], compartilhar (código-fonte, vídeo de combate real do projeto, notas do projeto, tutorial introdutório básico)

Bem-vindos parceiros que mudam de carreira e aprendem programação, usam mais informações para aprender e crescer mais rápido do que você pode imaginar!

Livros de aprendizagem de programação:

 

Vídeo de aprendizagem de programação:

 

Acho que você gosta

Origin blog.csdn.net/Hsuesh/article/details/112724191
Recomendado
Clasificación