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

Problem z tablicami w funkcji

42 Warsaw Coding Academy
0 głosów
239 wizyt
pytanie zadane 26 kwietnia 2020 w C i C++ przez michhal1 Początkujący (270 p.)

Witam, chce stworzyć zmienną, która ma wartość odpowiadającą wielkości tabeli, która za argument przyjmuje moja funkcja. Używam do tego funkcji sizeof, wszystko działa dobrze w obrębie funkcji main gdzie bezpośrednio znajdują się tabele, które chce wziąć jako argumenty do mojej funkcji. Problem w tym, że w mojej funkcji ,,Sumator", sizeof rozpoznaje wartość argumentu oraz wartość elementu [0] jako 4, wiec wnioskuje, że z góry zakłada wielkość tablicy jako 1. Jest jakiś sposób, żeby sizeof określał wielkość podanego argumentu z int main()?

#include <iostream>

using namespace std;

int Sumator (int tab[],int tab1[], int jd)
{

    int tabb = sizeof(tab) ;
    int tabbb = sizeof(tab1) / sizeof(tab1[0]);
 cout << tabbb << endl; //wyświetla 1
}
int main()
{
    int iks = 1;
    int tablica[6] = {1,2,3,4,5};
    int tablica1[11] = {1,2,3,4,5,7,7};
    Sumator(tablica, tablica1, iks);
     int x = sizeof(tablica) / sizeof(tablica[0]);
    cout << x; // wyświetla rozmiar tablicy
    return 0;
}

 

komentarz 26 kwietnia 2020 przez profesorek96 Szeryf (91,420 p.)
Co chciałbyś uzyskać ?

1 odpowiedź

0 głosów
odpowiedź 26 kwietnia 2020 przez j23 Mędrzec (195,240 p.)
edycja 26 kwietnia 2020 przez j23

W argumencie typ int[] to po prostu wskaźnik, dlatego sizeof zwraca rozmiar wskaźnika, czyli 4 lub 8. Najprościej przekazać rozmiary tych tablic w dodatkowych parametrach.

 

Możesz zrobić jeszcze tak:

template <int N, int M>
int Sumator (int (&tab)[N], int (&tab1)[M], int jd)
{
    std::cout << N << ' ' << M << std::endl; 
    std::cout << sizeof(tab) << ' ' << sizeof(tab1) << std::endl;
    return 0;
}

Ale czy to dobre rozwiązanie...

Podobne pytania

0 głosów
1 odpowiedź 125 wizyt
pytanie zadane 13 marca 2020 w C i C++ przez MiKasProgramista Początkujący (350 p.)
0 głosów
0 odpowiedzi 249 wizyt
pytanie zadane 11 grudnia 2020 w C i C++ przez Karina126 Początkujący (280 p.)
0 głosów
2 odpowiedzi 124 wizyt
pytanie zadane 16 października 2020 w C i C++ przez Kucharek Nowicjusz (150 p.)

93,385 zapytań

142,383 odpowiedzi

322,540 komentarzy

62,745 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

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...