• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Wywołanie funkcji w mainie w języku c

Object Storage Arubacloud
–1 głos
2,313 wizyt
pytanie zadane 7 listopada 2017 w C i C++ przez kamilm758 Początkujący (350 p.)
Mam banalne pytanie, ale dopiero zaczynam zabawę z programowaniem. funkcja wczytaj wczytuje wartości do tablicy. Jak wywołać tę funkcję w mainie?

#include <stdio.h>

#define N 10

void wczytaj(float tab[]){

int i;

for(i=0;i<N;i++)

scanf("%f",&tab[i]);

}

 

int main(){

float tab[N];

wczytaj(tab[N]); //zrobiłem tak, ale nie działa

}
1
komentarz 7 listopada 2017 przez k3ybo4rd Obywatel (1,180 p.)
edycja 8 listopada 2017 przez k3ybo4rd
wczytaj( float tab[] );



to to samo co

wczytaj( float * tab );



w prototypie podajesz (tak jakby)

wczytaj(float * tab);



zapis float * tab; oznacza właśnie -> tab jest wskaźnikiem na typ flaot -> tab jest zmienną wskaźnikową przechowującą adres liczby typu float.

a w wywołaniu funkcji podajesz

wczytaj( tab[N] );



gdzie tab[N] odwołuje się do wartości spod indeksu N tablicy tab

wartości która jest typu zmiennoprzecinkowa, natomiast wskaźnik to nie jest typ  zmiennoprzecinkowy, on jedynie wskazuje na typ zmiennoprzecinkowy jakiejś liczby która znajduje się pod jakimś adresem w pamięci

stąd chcąc operować na tablicy w funkcji wczytaj(float tab[]);

musisz przekazać jej adres czyli nazwę tablicy

nazwa tablicy wskazuje na adres pierwszego elementu tablicy tab

czyli

&tab[0];

 

komentarz 8 listopada 2017 przez Bondrusiek Maniak (61,370 p.)
Witam,

Obczaj sobie formatowanie kodu na tym forum:

https://forum.pasja-informatyki.pl/faq#jak-wstawic-kod-zrodlowy

1 odpowiedź

+2 głosów
odpowiedź 7 listopada 2017 przez Benek Szeryf (91,010 p.)

Formatowanie kodu - pierwsza klasa yes

W prototypie funkcji wczytaj zaznaczyłeś, że przyjmuje ona wskaźnik do tablicy tab, a w głównej funkcji wywołujesz tab[10] co oznacza inny typ danej, dodatkowo ta zmienna nie istnieje w pamięci. Wystarczy zmienić jedną linijkę w funkcji main:

wczytaj(tab);

 

Podobne pytania

0 głosów
0 odpowiedzi 896 wizyt
0 głosów
1 odpowiedź 182 wizyt
pytanie zadane 25 czerwca 2018 w C i C++ przez four Użytkownik (720 p.)
0 głosów
1 odpowiedź 108 wizyt
pytanie zadane 23 września 2020 w C i C++ przez Bartx Bywalec (2,120 p.)

92,570 zapytań

141,422 odpowiedzi

319,643 komentarzy

61,959 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...