Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gRoOvE

[Resolvido] Ponteiros básicos

Recommended Posts

Olá galera, estou começando a aprender Ponteiros, gostaria que postassem alguns exercícios básicos...li um pouco a respeito, agora preciso por em prática.

Compartilhar este post


Link para o post
Compartilhar em outros sites

2 exemplos:

#include <stdio.h>
int main ()
{
	int num,valor;
	int *p;
	num=55;
	p=&num;	 /* Pega o endereco de num */
	valor=*p;	   /* Valor e igualado a num de uma maneira indireta */
	printf ("\n\n%d\n",valor);
	printf ("Endereco para onde o ponteiro aponta: %p\n",p);
	printf ("Valor da variavel apontada: %d\n",*p);
	return(0);
}

#include <stdio.h>
int main ()
{
	int num,*p;
	num=55;
	p=&num;	 /* Pega o endereco de num */
	printf ("\nValor inicial: %d\n",num);
	*p=100; /* Muda o valor de num de uma maneira indireta */
	printf ("\nValor final: %d\n",num);
	return(0);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

quit, estava lendo justamente essa aula :D

passe só o enunciado dos exercícios pra eu tentar fazer

 

da hora ogroo, a parte básica eu intendi, vou dexar a parte de ponteiros para ponteiros para depois heeheh

 

preciso de exericios ae ^^

Compartilhar este post


Link para o post
Compartilhar em outros sites

olha achei numa apostila o seguinte exercicio, tente fazer:

B) Qual o valor de y no final do programa? Tente primeiro descobrir e depois

verifique no computador o resultado. A seguir, escreva um /* comentário */ em

cada comando de atribuição explicando o que ele faz e o valor da variável à

esquerda do '=' após sua execução.

int main()
{
int y, *p, x;
y = 0;
p = &y;
x = *p;
x = 4;
(*p)++;
x--;
(*p) += x;
printf ("y = %d\n", y);
return(0);
}

Groove qr msm aprender C? veja essa apostila Aspostila de C

Compartilhar este post


Link para o post
Compartilhar em outros sites

quit, esse exerício tem nesse artigo que li tb hasduiahdsudhasd

e essa apostila tb já tenho xDD. Ruin dela que nao da pra usar o localizar :(

vou procurar no google os exercícios, vlws :D

Compartilhar este post


Link para o post
Compartilhar em outros sites

não estou intendendo o que está acontecendo nesses laços, quando peço pra mostrar o resultado no final lá, o k começa a contar do 44, enquanto o j incrementa desde o 0 ate 49.

 

/*
int main ()
{
	float matrx [50][50];
	int i,j;
	for (i=0;i<50;i++)
		for (j=0;j<50;j++)
			matrx[i][j]=0.0;
	return(0);
}
*/
#include <stdio.h>

void main(void)
{
	float matriz[50][50];
	int i,j,k;
	float *p;

	p = matriz[0];

	for(i=0;i<2500;i++)
	{
		*p = 0.0;
		p++;
	}
	i = 0;
	j = 0;
	for(k=0;k<50;k++)
	{
		for(j=0;j<50;j++)
		{
			printf("\nValor de M[%d][%d] = %f",k,j,matriz[k][j]);
		}
	}

}

 

p = matriz[0];
nessa parte, não teria que pegar o endereço da matriz com o & ?? Porque se fizer M[0][0] ali da erro ?? "não é possivel converter float para float"

Compartilhar este post


Link para o post
Compartilhar em outros sites

coloca um ponto de pausa ali onde eu comentei, ai você pode verificar se esta ou nao comecando do 0, porque eu testei aqui e esta correto.

for(k=0;k<50;k++)
	{
		//system("pause") ou  getch()
		for(j=0;j<50;j++)
		{
			printf("\nValor de M[%d][%d] = %f",k,j,matriz[k][j]);
		}
	}

Se voce fizer

p = &matriz[0][0];
Funciona

 

Quando ao porque pode ou nao pode uma coisa e outra eu nao saberia te informar exatamente, entao prefiro nao falar besteiras aqui =p...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Concorda que a variável matriz[0] não existe em sua declaração?

As variáveis seriam:

matriz[0][0]

.

.

matriz[1][20]

.

.

matriz[49][49]

 

 

matriz[0] seria o endereço inicial de sua matriz, não precisa do & para dizer isso.

O mesmo serve para vetores.

Numa função voce passa a referencia para o vetor apenas usando o nome dele.

 

Quero armazenar o endereço inicial da matriz, como posso fazer:

p = matriz[0];
ou
p = &matriz[0][0];

Quero o primeiro conteúdo dessa matriz, como fazer:

 

*p = matriz[0][0];

 

nessa parte, não teria que pegar o endereço da matriz com o & ?? Porque se fizer M[0][0] ali da erro ?? "não é possivel converter float para float"

Compartilhar este post


Link para o post
Compartilhar em outros sites

saquei Kandrade, vlw :D

mas cara, a matriz ta começando do 44(o k), coloquei um printf() no k lá, começa do 44 mesmo, que coisa mais intrigante "/

Myho, o k ta começando do 0 ae ??

Compartilhar este post


Link para o post
Compartilhar em outros sites

copiou e colou meu código?? como é possível velho, testei no visual studio e no dev :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Será que não é a limitação da tela?

 

Vai diminuindo o tamanho da matriz.

 

Se mesmo assim ficar na dúvida mande um printif em "k" e logo faça um break para forçar a saída do laço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

aff que cabaço, tava limitado a quantidade de linhas da "black window maldita"...malz :(

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.