Archive

Archive for the ‘C’ Category

Ponteiros dando continuidade

13 de janeiro de 2011 Deixe um comentário

Salve galera, dando continuidade no que comecei no post anterior vamos ver mais algo de ponteiros em C.

Hoje vou colocar mais uns códigos comentados para ficar mais fácil de visualizar algumas utilizações com os ponteiros.

#include
main()
{
float *ponteiro_1, *ponteiro_2;
float Aux, x, y;
x = 1; /* o conteúdo de x agora é igual a 1 */
y = 2; /* o conteúdo de y agora é igual a 2 */
ponteiro_1 = &x; /* ponteiro_1 aponta para x ou tem o endereço da variavel x*/
ponteiro_2 = &y; /* ponteiro_2 aponta para y ou tem o endereço da variavel y*/
Aux = *ponteiro_1; /* o conteúdo de Aux agora é 1 (*a = conteúdo de x) */
*ponteiro_1 = *ponteiro_2; /* o conteúdo de x agora é 2 (*b = conteúdo de y) */
*ponteiro_2 = Aux; /* o conteúdo de y agora é 1 */
printf(“x = %f e y = %f \n”, x, y);
}

Temos então um programa eu diria um pouco mais sofisticado para permutar os conteúdos de duas variáveis.

  • Linha 8   — ponteiro_1 =&x // ponteiro_1 ficará com o valor do endereço de X assim como na linha 9 ponteiro_2 ficará com o valor do endereço de Y
  • Aux recebe o valor que está armazenado no local onde ponteiro_1 aponta, no nosso caso ele aponta para X
  • Em seguida *ponteiro_1 recebe o valor que é apontado pelo ponteiro_2
  • ponteiro_2 recebe agora o valor que está em Aux
  • no printf  agora imprimos os valores de X e Y após terem sido permutados via ponteiros.

Eis aqui o que deverá sair no nosso console.


Ponteiros em C

10 de janeiro de 2011 Deixe um comentário

Aproveitando que tenho dado uma atenção especial a linguagem C ultimamente e que hoje me concentro na parte de ponteiros, resolvi então falar algo aqui até para que sirva como uma anotação minha para consultas futuras e quem saiba até possa ser util para alguem interessado e que esteja engatinhando assim como eu.

Pois bem vamos ao que interessa.

Exemplo para ilustrar o que são e como funcionam os ponteiros.

Quando você anota o endereço de um colega você está criando um ponteiro. O ponteiro é este seu pedaço de papel. Ele tem anotado um endereço. Qual é o sentido disto? Certo mas e daí? o que isso tem haver com a programação.

Quando você anota o endereço de um colega, depois você vai usar este endereço para achá-lo. O C funciona assim. Voce anota o endereço de algo numa variável ponteiro para depois usar.

Ponteiros em C

Cada posição de memória  é associado um número  inteiro chamado endereço  da  posição  de  memória.  Como   uma  variável  é   uma  posição  de  memória,   a   cada   variável   é associado um endereço. Um ponteiro é uma variável capaz de armazenar um endereço de outra variável, sendo declarado com a seguinte sintaxe:

Tipo de dado *Identificador;

A  semântica   desta   declaração   pode   ser   assim  entendida:  Identificador  é   capaz   de   armazenar   o endereço de uma variável de tipo Tipo de dado. Por exemplo, uma declaração do tipo

int *p;

indica que p é uma variável capaz de armazenar o endereço de uma variável do tipo int. Na prática dizemos que p  aponta  para um inteiro.  Assim,  ponteiros também são chamados  apontadores.  Como ponteiros são variáveis,  pode-se   atribuir  um ponteiro  a  outro do mesmo   tipo.  Por   exemplo,   são válidas   as   seguintes instruções:

int *p, *t, i; // Declaração das nossas variáveis
p = &i; // p irá receber aqui o valor do endereço de i
t = p;        // t = p é possivel pois t e p são variaveis do tipo ponteiros

Na figura acima nosso ponteiro “p” foi armazenado digamos na posição 3 e nossa variavel “i” na posição 177450

na instrução p=&i;

P irá pegar o valor da posição de memoria de “i”.

#include <stdio.h>

main()
{

int i = 10, *p;
p = &i;
printf(“%d \n”, p); // Mostra o valor da posição de memoria onde i foi armazenado ( valor em decimal)
printf(“%p \n”, p); // Mostra o valor da posição de memoria onde i foi armazenado ( valor em hexadecimal)
printf(“%d \n”, *p); // Mostra o valor da variavel i ( No nosso exemplo i = 10)
}

BOm a medida que eu for avançando meu resumo irei postar aqui mais dicas.

Até a proxima.

Categorias:C Tags:, ,