[C] Operacja na wskaźniku nie przekazuje zmian do funkcji main
Ostatnio zmodyfikowano 2013-06-18 13:11
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) #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 ); 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 ); } |
|
pekfos |
» 2013-06-17 21:30:46 Przekaż wskaźnik przez wskaźnik lub referencje.
//edit: nie doczytałem, że chodzi o C ;) |
|
DejaVu |
» 2013-06-18 13:11:57 Jeżeli chcesz modyfikować wskaźnik przekazany poprzez argument to:
#include <stdio.h> #include <stdlib.h>
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; } |
|
« 1 » |