Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C] Operacja na wskaźniku nie przekazuje zmian do funkcji main

Ostatnio zmodyfikowano 2013-06-18 13:11
Autor Wiadomość
MARCIN-QWERTY
Temat założony przez niniejszego użytkownika
[C] Operacja na wskaźniku nie przekazuje zmian do funkcji main
» 2013-06-17 21:12:13
Tworzenie tablic dynamicznych w C, problem z tym że można wydrukować tablice tylko z funkcji wypełnij a ja bardzo chcialbym z main ;)
wyglada to tak jakbym dzialal na zmiennej lokalnej ? ale przecież to wskaźnik ? bardzo prosze o pomoc. (sorry ale jestem nowy mam nadzieje że nie zrobiem żadnego błędu i nie zaśmiecam forum) 
C/C++
#include <stdio.h>
#include <stdlib.h>

char * wypelnij( char * wsk, char zn, int n );

int main()
{
    char zn;
    char * wsk;
    int rozmiar;
   
    puts( "podaj rozmiar" );
    scanf( "%d", & rozmiar );
    fflush( stdin );
   
    puts( "podaj znak ktorym wypelnisz tablice" );
    scanf( "%c", & zn );
    fflush( stdin );
   
    wypelnij( wsk, zn, rozmiar );
   
    puts( wsk ); //tutaj nie wypisuje wcale
   
    free( wsk );
   
    return 0;
}

char * wypelnij( char * wsk, char zn, int n )
{
    int i;
    wsk =( char * ) malloc( n * sizeof( char ) );
   
    for( i = 0; i < n; i++ )
    {
        wsk[ i ] = zn;
    }
    wsk[ i ] = '\0';
   
    puts( wsk ); //tu dziala
}
P-85748
pekfos
» 2013-06-17 21:30:46
Przekaż wskaźnik przez wskaźnik lub referencje.

//edit: nie doczytałem, że chodzi o C ;)
P-85750
DejaVu
» 2013-06-18 13:11:57
Jeżeli chcesz modyfikować wskaźnik przekazany poprzez argument to:
C/C++
#include <stdio.h> //Dla języka C
#include <stdlib.h> //Dla języka C

void funkcja( int ** wskaznik )
{
    * wskaznik =( int * ) malloc( sizeof( int ) * 123 );
}

int main()
{
    int * wsk = 0;
    printf( "%p\n", wsk );
    funkcja( & wsk );
    printf( "%p\n", wsk );
    return 0;
}
P-85781
« 1 »
  Strona 1 z 1