Discussion:
Duda con punteros
(demasiado antiguo para responder)
Cachorro
2006-03-08 13:13:31 UTC
Permalink
Hola buenas.
Haciendo un programa, me surgió una duda, era como pasar un puntero por
referencia, en c++ se hacerlo pero en c se me esta resistiendo.....
a ver que tengo mal por ahí :)

Un Saludo Cachorro



=================================
en c
=================================
#include <stdlib.h>
#include <stdio.h>

void mod(int **p){
*p=(int *) malloc (10*sizeof(int));
int i=0;
while (i<10){
*p[i]=i;
i++;
}
}

int main(){
int *p=NULL;
mod (&p);
int i=0;
while (i<10){
printf ("%d \n", p[i]);
i++;
}
}


=================================
en c++
=================================
#include <stdlib.h>
#include <stdio.h>

void mod(int *&p){
p=(int *) malloc (10*sizeof(int));
int i=0;
while (i<10){
p[i]=i;
i++;
}
}

int main(){
int *p=NULL;
mod (p);
int i=0;
while (i<10){
printf ("%d \n", p[i]);
i++;
}
}
ROC
2006-03-08 15:02:35 UTC
Permalink
Hola:
Creo que, según tu función main, lo que quieres pasar es simplemente un
puntero (una dirección de memoria), no la referencia a un puntero que dices
(que sería la dirección de memoria de un puntero donde se guarda otra
dirección de memoria).
Por tanto, me parece que te sobra un asterisco en la declaración de mod.
Prueba:

void mod (int *p){
// tu código
}

A ver si te funciona.

Saludos
ROC
Post by Cachorro
Hola buenas.
Haciendo un programa, me surgió una duda, era como pasar un puntero por
referencia, en c++ se hacerlo pero en c se me esta resistiendo.....
a ver que tengo mal por ahí :)
Un Saludo Cachorro
=================================
en c
=================================
#include <stdlib.h>
#include <stdio.h>
void mod(int **p){
*p=(int *) malloc (10*sizeof(int));
int i=0;
while (i<10){
*p[i]=i;
i++;
}
}
int main(){
int *p=NULL;
mod (&p);
int i=0;
while (i<10){
printf ("%d \n", p[i]);
i++;
}
}
=================================
en c++
=================================
#include <stdlib.h>
#include <stdio.h>
void mod(int *&p){
p=(int *) malloc (10*sizeof(int));
int i=0;
while (i<10){
p[i]=i;
i++;
}
}
int main(){
int *p=NULL;
mod (p);
int i=0;
while (i<10){
printf ("%d \n", p[i]);
i++;
}
}
Pedro Maicas
2006-03-08 23:03:25 UTC
Permalink
Post by Cachorro
Haciendo un programa, me surgió una duda, era como pasar un puntero por
referencia, en c++ se hacerlo pero en c se me esta resistiendo.....
a ver que tengo mal por ahí :)
char * des_referencia(char **pp)
{
return *pp;
}

void loquesea()
{
char *qq = "loquesea";

puts(des_referencia(&qq));
}


Saludos :-) -Pedro-

http://www.maicas.net/

e-mail en www.maicas.net

Loading...