Como usar ponteiros e cordas em c programação

A linguagem de programação C carece de uma variável de cadeia, mas tem a matriz char, que é efetivamente a mesma coisa. Como uma matriz, uma cadeia em C pode ser completamente torcido, apertadas, e abusado usando ponteiros. É um assunto muito mais interessante do que mexer com matrizes numéricos.

Video: Programar em C - Função malloc() | Alocação Dinâmica Pt.2 - Aula 96

Como usar ponteiros para exibir uma string

Você é mais provável familiarizado com a exibição de uma string em C, provavelmente usando a função tanto as puts () ou printf (). Cordas, também, pode ser exibido um caractere por vez se arrastando através de uma matriz.

OLÁ, STRING

#include int main () {amostra char [] = "De onde vem o meu socorro? N"Índice -int = 0-while (amostra [índice] = ``!) {putchar (amostra [índice]) - o índice ++ -} return (0) -}

O código mostrado na Olá, String é código C completamente legítima, válida para criar um programa que exibe uma string. Mas ele não usa ponteiros, não é?

Exercício 1: Modificar o código fonte de Olá, corda, substituindo a notação de matriz com a notação ponteiro. Elimine o índice variável. Você precisa criar e inicializar uma variável ponteiro.

A avaliação do loop while em Olá, String é redundante. O caractere nulo avalia como falso. Assim, a avaliação poderia ser reescrita como

enquanto (amostra [índice])

Enquanto o elemento de matriz referenciado por amostra [índice] não é um caracter nulo, o loop gira.

exercício 2: Editar a avaliação do loop while em sua solução para o Exercício 1, eliminando a comparação redundante.

Exercício 3: Continuar trabalhando em seu código, e desta vez eliminar as declarações no loop while. Coloque toda a acção na avaliação do instrução while. Por uma questão de referência, a função putchar () retorna o caractere que é exibido.

Como declarar uma string usando um ponteiro

Aqui está um truque assustador você pode puxar usando ponteiros, que vem com um barco cheio de cautela. Considere Um ponteiro anuncia uma String.

A POINTER ANUNCIA UMA CORDA

main () {int * amostra #include carvão = "De onde vem o meu socorro? N"-enquanto (putchar (* amostra ++)) - retorno (0) -}


Em Um ponteiro anuncia um String, a corda que é exibido é criado por inicializar um ponteiro. É uma construção que parece estranho, mas é algo que você testemunhar muitas vezes em código C, particularmente com cordas. (Você não pode usar essa convenção para inicializar uma matriz numérica.)

Video: Programar em C - Ponteiros e Vetores - Aula 71

exercício 4: Copie o código-fonte de um ponteiro anuncia uma String em seu editor. Construir e executar.

O barco cheio de precaução em Um ponteiro anuncia um String, e quando você usar um ponteiro para declarar diretamente uma corda, é que a variável ponteiro não pode ser manipulado ou então a string é perdido.

Por exemplo, um ponteiro anuncia uma corda, o amostra variável é utilizado na linha 7 para o passo através da cadeia, como parte da função putchar (). Opa. Se você wantto usar amostra mais tarde no código, que não iria mais fazer referência ao início da string.

Ao declarar uma string usando um ponteiro, não mexa com a variável de ponteiro em outras partes do código.

A solução é salvar o endereço inicial do ponteiro ou simplesmente usar um segundo ponteiro para trabalhar na corda.

exercício 5: Corrigir o código em um Pointer anuncia uma String para que o amostra o valor da variável é salvo antes do While Loop é executado e é então restaurada depois. Adicionar um (amostra) declaração puts ao código após o loop while é feito em execução, para provar que endereço original da variável é restaurado.

Como classificar cordas

Tomando o que você sabe sobre a classificação na linguagem C, você provavelmente pode criar um programa de triagem corda decente. Ou, no mínimo, você pode explicar como ele é feito. Isso é ótimo! Mas é um monte de trabalho.

Video: Programar em C - 05 - [PARTE 1] Structs, Ponteiros e Alocação Dinâmica

O que é melhor quando se trata de classificar cordas não é para classificar as cordas em tudo. Não, em vez disso, você classificar uma matriz de ponteiros referenciando as cordas. Cordas de triagem, a tentativa inicial mostra um exemplo.

CLASSIFICAÇÃO CORDAS, a tentativa inicial

#include int main () {char * fruta [] = {"Damasco","banana","abacaxi","maçã","caqui","pera","mirtilo"} -char * temp-int a, b, x-a (a = 0-alt; 6-A ++) para (b = a + 1-blt; 7-b ++) if (* (fruta + a) gt; * (Fruta + b)) {temp = * (+ fruta a) - * (fruta + a) = * (fruta + b) - * (fruta + b) = temp-} para (x = 0-xlt; 7 -x ++) puts (fruto [x]) - retorno (0) -}

exercício 6: Digite o código-fonte do Classificando Cordas, a tentativa inicial em seu editor. Criar e executar para garantir que as cordas são devidamente ordenados.

Bem, provavelmente não funcionou. Ele pode ter, mas se a lista é ordenada ou alterado de alguma forma, é uma consequência não intencional e, definitivamente, não repetível.

O problema é na linha 19. Você não pode comparar strings usando a gt; operador. Você pode comparar caracteres individuais e você poderia, então, ordenar a lista com base nesses personagens, mas a maioria dos seres humanos preferem palavras ordenados em toda a sua extensão, não apenas o primeiro caractere.

exercício 7: Modificar seu código-fonte, e usar a função strcmp () para comparar strings para determinar se eles precisam ser trocados.


Publicações relacionadas