No entindo esto sobre punteros

Saludos. Tengo una gran duda y te agradecería me aclares esto por favor. En el sgt. Ejemplo funciona correctamente:
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
char string1[100] = "hola mundo";
char string2[100];
char *copiar(char *destino, char *origen) {
while (*origen != '\0')
*destino++ = *origen++;
*destino = '\0';
return destino;
}
int main(void)
{
copiar(string2, string1);
puts(string2);
getch();
}
Pero hasta donde se, decir arreglos es sinonimo de punteros, es decir char string1[100] es igual a char *string1. Si esto es cierto porque el siguiente código no me funciona correctamente:
#include <stdio.h>
#include <conio.h>
#include <iostream.h>
char *string1= "hola mundo";
char *string2;
char *copiar(char *destino, char *origen) {
while (*origen != '\0')
*destino++ = *origen++;
*destino = '\0';
return destino;
}
int main(void)
{
copiar(string2, string1);
puts(string2);
getch();
}
Muchas gracias por tu ayuda

1 Respuesta

Respuesta
1
Vea mijo
si le funciona es por un error en el sistema, cuando ud dice
char *string1;
esta creando una var que pueda apuntar a un char o un vector de char, en este punto
char *string1;
string1 esta vacio o tiene una direccion a basura
no se puede utilizar,
debes hacer algo como
char *string1;
string1 = new char[100];
strcpy(string1,"Hola mundo");
copiar(string1,string2);
////otra forma es
char *string1;
string1 = new char[ strlen("Holamundo")+1 ];
strcpy(string1,"Hola mundo");
Ojala te sirva

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas