Olá, seja bem-vindo de volta. Temos outro desafio para você.
Neste desafio, quero que você aprenda tudo sobre aritmética de ponteiros.
Lembre-se de que a aritmética de ponteiros é um conceito muito bom.
É um conceito notacional.
Mas realmente ilustra como os arrays
estão relacionados aos ponteiros. Você pode percorrer um array muito facilmente
com uma sintaxe muito simples que reduz sua linha de código e é
um conceito muito bom.
Então, você aprenderá tudo sobre aritmética de ponteiros.
Também aprenderemos mais sobre o modificador de constante.
Portanto, neste desafio, quero que você escreva um
programa que teste sua compreensão da aritmética de ponteiros e do modificador const.
Aprendemos sobre esses dois conceitos em palestras anteriores.
Então, eu quero que você escreva uma função que calcule o comprimento da string.
Os requisitos são que a função deve ter como um ponteiro de char constante de parâmetro.
Um ponteiro char constante significa que você não pode alterar o valor para o qual
o ponteiro está apontando, e você não
vai fazer isso com o comprimento.
A função só pode determinar o comprimento da string usando aritmética de ponteiro.
Não quero que você use a função de comprimento de str. Eu quero que você use a aritmética de ponteiro.
E a maneira que estou imaginando que essa função seja
implementada é que você obterá o endereço do final do ponteiro.
Esse seria essencialmente o comprimento do ponteiro.
Mas a maneira como você pode obter o endereço da última string e o ponteiro é que você
pode escrever um loop while.
O loop while pode ir até o caractere terminador nulo.
Ou o caractere terminador nulo, lembre-se, é
representado como int.
Portanto, o terminador nulo é na verdade um zero. Portanto, você pode escrever
um loop while e todo o loop while deve ser
incluído em sua condição, desreferenciando o ponteiro.
Porque se o valor do ponteiro de referência d for zero, pule para fora do
loop e isso seria o terminador nulo.
Portanto, quero que você percorra todo
o ponteiro.
E enquanto você faz
isso, continue incrementando esse ponteiro.
Agora você tem um ponteiro que aponta para o final da string.
Então, para realmente calcular o comprimento, tudo que você
precisa fazer é menos dois ponteiros.
O ponteiro que foi passado é o início da
string e, a seguir, o ponteiro
que você criou na função que está apontando para o final da string.
Se você menos o final do ponteiro da string a partir do
início do ponto da string, terá o comprimento da string.
Portanto, você fará aritmética de ponteiros incrementando o
ponteiro um por um para chegar ao endereço final e, em seguida,
estará usando aritmética de pontos para subtrair cada ponteiro.
Esta é provavelmente a maneira mais válida de usar
aritmética de pontos para subtração. Você geralmente não adiciona dois
ponteiros, porque você adicionaria dois endereços.
Você pode subtrair dois endereços para saber a que distância dois elementos
estão em um array,
isso faria sentido, mas adicionar não. Portanto, apenas para reiterar, a função só
pode determinar o comprimento da string usando a aritmética de pontos.
Crie um ponteiro local em sua
função, incremente esse ponteiro a cada vez para chegar ao final
até ver o terminador nulo, um loop while simples.
E então, uma vez que você tem o endereço final, você já
tem o endereço inicial, subtraia aqueles dois ponteiros que lhe darão o comprimento.
Você deve retornar esse comprimento como um int da função.
E então você pode simplesmente imprimir o próprio comprimento real.
Portanto, esta atribuição o está familiarizando com a aritmética de pontos e
também como usar o modificador de constante, porque você não quer alterar o valor
real para o qual ele está apontando
e subtraindo dois ponteiros também e também usando um loop while onde
você pode olhar o próprio valor do ponteiro para
determinar o caractere nulo. Boa sorte.
Vou fornecer uma solução na próxima aula. Obrigada.