Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
Madeira10

Ponteiros e Arrays

Recommended Posts

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);
            }
}

Edited by brunoais
geshi

Share this post


Link to post
Share on other 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

Share this post


Link to post
Share on other 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...

Share this post


Link to post
Share on other 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 ?

Edited by Marzkor

Share this post


Link to post
Share on other 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

Edited by HappyHippyHippo

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

Share this post


Link to post
Share on other 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");
}

Edited by Marzkor

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.