DEV Community

Delmiro Ribeiro
Delmiro Ribeiro

Posted on

Ponteiros na programação para iniciantes.

Um ponteiro é uma variável que armazena o endereço de memória de outra variável. Em outras palavras, ao invés de armazenar diretamente um valor, um ponteiro armazena a localização na memória onde esse valor está armazenado. Essa habilidade permite que o programa manipule diretamente os dados na memória, o que é extremamente útil para uma série de operações avançadas.

Podemos listar como as principais aplicações dos ponteiros:

Alocação Dinâmica de Memória:
Permite que o programa aloque memória durante a execução usando funções da biblioteca padrão, como malloc, calloc, realloc e free.

Manipulação de Arrays e Strings:
Facilita o acesso e modificação de elementos de arrays e strings.
Arrays e strings em C são manipulados com facilidade através de ponteiros.

Estruturas de Dados Dinâmicas:
Implementação de listas encadeadas, árvores, pilhas, filas e outras estruturas dinâmicas.
Ponteiros permitem que essas estruturas cresçam e diminuam de tamanho conforme necessário.

Passagem de Parâmetros para Funções:
Permite a passagem de grandes estruturas de dados ou arrays para funções sem a necessidade de cópia, melhorando a eficiência.
As funções podem modificar diretamente os argumentos passados via ponteiros.

Exemplo utilizando a linguagem de programação C:

include

include

int main() {
int *ptr; //aqui declaramos o ponteiro utilizando o operador * antes do nome da variável
int n, i;

printf("Digite o número de elementos: ");
scanf("%d", &n);

// Alocando memória para n inteiros
ptr = (int*) malloc(n * sizeof(int));

if (ptr == NULL) {
    printf("Erro de alocação de memória!\n");
    return 1;
}
Enter fullscreen mode Exit fullscreen mode

Exemplo de manipulação de Arrays:

include

void printArray(int *arr, int size) {
for (int i = 0; i < size; ++i) {
printf("%d ", *(arr + i));
}
printf("\n");
}

int main() {
int arr[] = {1, 2, 3, 4, 5};
int size = sizeof(arr) / sizeof(arr[0]);

printArray(arr, size);

return 0;
Enter fullscreen mode Exit fullscreen mode

}

printf("Digite os elementos do array:");
for (i = 0; i < n; ++i) {
    scanf("%d", ptr + i);
}

printf("Os elementos do array são:");
for (i = 0; i < n; ++i) {
    printf("%d ", *(ptr + i));
}

// Liberando a memória alocada
free(ptr);

return 0;
Enter fullscreen mode Exit fullscreen mode

}

AWS GenAI LIVE image

How is generative AI increasing efficiency?

Join AWS GenAI LIVE! to find out how gen AI is reshaping productivity, streamlining processes, and driving innovation.

Learn more

Top comments (3)

Collapse
 
thomasbnt profile image
Thomas Bnt

Hello ! Don't hesitate to put colors on your codeblock like this example for have to have a better understanding of your code 😎

console.log('Hello world!');
Enter fullscreen mode Exit fullscreen mode

Example of how to add colors and syntax in codeblocks

Collapse
 
delmiro profile image
Delmiro Ribeiro

Thanks for the tip, I had problems with the formatting of the post.
From today on, in addition to using colors in the examples, I will still use Python to exemplify my explanations, it gets easier.
Thank you.

Collapse
 
thomasbnt profile image
Thomas Bnt

No problem it's fine 😎

Postmark Image

Speedy emails, satisfied customers

Are delayed transactional emails costing you user satisfaction? Postmark delivers your emails almost instantly, keeping your customers happy and connected.

Sign up

👋 Kindness is contagious

Please leave a ❤️ or a friendly comment on this post if you found it helpful!

Okay