Así que soy bastante nuevo en el uso de punteros y quería saber cómo podría hacer lo siguiente, pero con un valor de cadena.

int number(int, int *);
int main()
{
    int a = 15;
    int b =0;
    
    number(a,&b);
    
    fprintf(stdout,"Number b is %d\n",b);
    return 0;
}


int number(int a, int *b) {
    
    *b = a;
     
}
1
Steve 21 ene. 2021 a las 18:20

1 respuesta

La mejor respuesta

Parece que quieres decir algo como lo siguiente

#include <stdio.h>

char * assign( char **s1, char *s2 )
{
    return *s1 = s2;
}

int main(void) 
{
    char *s1 = "Hello World!";
    char *s2;
    
    puts( assign( &s2, s1 ) );
    
    return 0;
}

La salida del programa es

Hello World!

Es decir, para asignar un valor al puntero s2 (que tiene el tipo char *) dentro de la función, debe pasarlo a la función por referencia como lo está haciendo en su programa con un objeto de la escriba int. De lo contrario, la función se ocupará de una copia de su argumento y los cambios que la copia no influyan en el argumento.

Pasar un objeto por referencia en C significa pasar un objeto indirectamente a través de un puntero.

Si tiene matrices de caracteres que almacenan cadenas, para copiar una cadena a una matriz de caracteres, puede usar la función de cadena estándar strcpy declarada en el encabezado <string.h>.

0
Vlad from Moscow 21 ene. 2021 a las 15:32