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

Funkcja zwracająca wskaźnik do podanego elementu tablicy

Ostatnio zmodyfikowano 2018-12-06 15:09
Autor Wiadomość
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:

C/C++
#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 ); //100.20
   
   
   
    return 0;
}
 
P-173113
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.
P-173114
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

C/C++
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.



P-173116
pekfos
» 2018-12-06 11:38:10
Przekazujesz do printf() wskaźnik na float, a nie float. Polecam zapoznać się z » Kurs C++ » Poziom 5Wskaźniki lekcja.
P-173117
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 :(
P-173118
pekfos
» 2018-12-06 15:09:56
Problem jest w tym, że ten printf() w main() jest błędny.
C/C++
printf( "Element na ktory wskazuje wskaznik = %.2f\n", * pointer );
Tak musi wyglądać, żeby działał poprawnie.
P-173119
« 1 »
  Strona 1 z 1