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

}

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 😎