Ir para o conteúdo
Madeira10

Ponteiros e Arrays

Mensagens Recomendadas

Madeira10

boas, tenho uma lista na main que tem certos elementos do argv e queria que outra funcao alterasse elementos com valor igual a x mas nao estou a conseguir utilizar bem os ponteiros..

o que fiz foi :

void substitui(int x , int (*lista)[]){
int i;
for(i = 0; i < lista.size(); i++){
if(lista == x)
lista = novo;
}
}

int main(int argc, char *argv[]){
    int lista[argc];
    for(i; i < argc; i++){
if(strcmp(argv , "a")){
lista = atoi(argv[i+1]);
                    substitui( valor1, &lista);
            }
}

Editado por brunoais
geshi

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

eu nem sei por onde pegar ... a primeira coisa a fazer é :

1 - olha para a imensa lista de erros do compilador e lê para a primeira.

2 - corrige e volta a compilar.

3 - volta ao ponto 1


IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Madeira10

eu nao pus o codigo todo, daí ser natural parecer que tenho uma data de erros, mas a unica coisa que quero perceber é como faço para utilizar a lista definida dentro do main no metodo substitui... alterando essa mesma lista...

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Marzkor

Realmente como Happy disse isto está complicado

void substitui(int x , int *lista, int tam){
int novo,i;
for(i = 0; i < tam ; i++){
if (lista[i] == x)
lista[i] = novo;
}

o novo esta a fazer o que ?

Editado por Marzkor

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
HappyHippyHippo

void foo(int lista[])
{
}

void bar()
{
 int lista[20];

 foo(lista);
}

nota que dentro de "foo" não tens maneira de saber o tamanho da lista, normalmente o tamanho é adicionado à lista de parâmetros desta

Editado por HappyHippyHippo

IRC : sim, é algo que ainda existe >> #p@p

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites
Marzkor

Aqui tens um pequeno exemplo, muito estático, acho que já para ter uma ideia como se faz apontadores com arrays(Usei os dois metodos possiveis para indexar os arrays com os apontadores) :

#include <stdio.h>

void substitui(int x , int * lista, int tam){
int novo,i;
//Escreve a Lista Antes de Trocar
for (i=0;i<tam;i++){
printf ("%d\n",lista[i]);
}
//Troca
for(i = 0; i <tam ; i++){
if (lista[i] > x)
lista[i] = 0;
}
//Escreve Depois
for (i=0;i<tam;i++,lista++){
printf ("%d\n",*lista);
}
}
int main(int argc, char *argv[]){
int i;
int lista[10]={0,1,2,3,4,5,6,7,8,9};
//numeros maiores que 5 passa a 0
substitui (5,lista,10);
//Espera
scanf ("%d");
}

Editado por Marzkor

Partilhar esta mensagem


Ligação para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!

Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.

Entrar Agora

×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade. Este site usa cookies para disponibilizar funcionalidades personalizadas. Para mais informações visite esta página.