SPARTANIN Temat założony przez niniejszego użytkownika |
Funkcja zwracająca wskaźnik do podanego elementu tablicy » 2018-12-06 00:24:05 Witam. Na zajęciach miałem do napisania kilka zadań, jednak z tym jednym nie potrafiłem sobie poradzić i nie daje mi ono spokoju. Nie potrafię zrozumieć dokładnie tematu wskaźników. Mam napisać funkcje która realizuje zadanie takie jak w temacie. Funkcje main otrzymałem i nie mogę jej zmienić. Czy w ogóle dobrze kombinuje ? Napisałem coś takiego: #include <stdio.h> #include <stdlib.h>
float * getPointer( float array[], int element ) { printf( "%f", array[ element ] ); float pointer = array[ element ]; printf( "\n\n%.2f\n\n", pointer ); return pointer; }
int main() { float array[ 10 ] = { 1.0, 1.1, 3.14, 3.14, 5.7, 1.0, 100.2, 1.1, 1.1, 1.1 }; float * pointer = getPointer( array, 6 ); printf( "Element na ktory wskazuje wskaznik = %.2f\n", pointer ); return 0; }
|
|
YooSy |
» 2018-12-06 01:01:29 float pointer = array[ element ]; |
To jest tylko przypisanie wartości do zwykłej zmiennej. Wskaźnik ma * w deklaracji i musi dostać adres na który ma wskazywać. float * pointer = & array[ element ]; Do dereferencji wskaźnika też używamy * . W przeciwnym razie wypisujemy tylko adres, na który wskazuje. Na przyszłość pisz też jakie są błędy kompilacji, bądź jakiego typu błędy ma program. |
|
SPARTANIN Temat założony przez niniejszego użytkownika |
» 2018-12-06 11:31:57 Dziękuje za odpowiedź :) Kompilator nie pokazuje mi żadnych błędów, ale błąd jest taki, że program na końcu float * pointer = getPointer( array, 6 ); printf( "Element na ktory wskazuje wskaznik = %.2f\n", pointer );
wypisuje "Element na ktory wskazuje wskaznik = 0", a powinien pokazać 100.20 czyli po prostu funkcja nie zwraca jaka wartość stoi pod danym elementem tablicy. |
|
pekfos |
» 2018-12-06 11:38:10 Przekazujesz do printf() wskaźnik na float, a nie float. Polecam zapoznać się z Wskaźniki. |
|
SPARTANIN Temat założony przez niniejszego użytkownika |
» 2018-12-06 14:46:13 Dobrze rozumiem, że mówisz o tym printf() który jest w funkcji main ? Funkcje main dostałem w takiej postaci jak jest i dopisek, że nie można jej zmieniać. Lekcje o wskaźnikach przeczytałem już wcześniej, właściwie od tego zacząłem szukać rozwiązania, jednak coś nie chce mi zatrybić, żebym zrozumiał w czym jest tutaj problem :( |
|
pekfos |
» 2018-12-06 15:09:56 Problem jest w tym, że ten printf() w main() jest błędny. printf( "Element na ktory wskazuje wskaznik = %.2f\n", * pointer );
Tak musi wyglądać, żeby działał poprawnie. |
|
« 1 » |