Gambit
2004-01-18 13:01:16 UTC
Hi!
Jestem tu nowy, więc na początek witam wszystkich grupowiczów!
Dopiero zacząłem uczyć się C++ i mam pewien problem.
Najlepiej będzie jak pokażę o co mi chodzi na przykładzie programu:
#include <iostream>
using namespace std;
void test(int a[]) {
cout << "sizeof(a) = " << sizeof(a) << endl;
}
int main() {
int a[20];
cout << "sizeof(a) = " << sizeof(a) << endl;
test(a);
}
Dlaczego w main wyświetla wszystko dobrze tzn. że tablica ma rozmiar 80
bitów, a w metodzie test traktuje wskaźnik do tablicy jako (jak
przypuszczam) pierwszy element tej tablicy i zwraca że rozmiar "a" jest
równy 4bity? Dlaczego nie traktuje wskaźnika jako tablicę, tylko jako po
prostu jakieś miejsce w pamięci, które równie dobrze może być wskaźnikiem
do int'a? A może moje przypuszczenia są błędne i takie zachowanie jest "mile
widziane" (nie wiedziałem jakiego słowa tu użyć :)?
Mam nadzieję, że moje pytanie nie jest zbyt lamerskie.
Pozdrawiam!
Gambit
Jestem tu nowy, więc na początek witam wszystkich grupowiczów!
Dopiero zacząłem uczyć się C++ i mam pewien problem.
Najlepiej będzie jak pokażę o co mi chodzi na przykładzie programu:
#include <iostream>
using namespace std;
void test(int a[]) {
cout << "sizeof(a) = " << sizeof(a) << endl;
}
int main() {
int a[20];
cout << "sizeof(a) = " << sizeof(a) << endl;
test(a);
}
Dlaczego w main wyświetla wszystko dobrze tzn. że tablica ma rozmiar 80
bitów, a w metodzie test traktuje wskaźnik do tablicy jako (jak
przypuszczam) pierwszy element tej tablicy i zwraca że rozmiar "a" jest
równy 4bity? Dlaczego nie traktuje wskaźnika jako tablicę, tylko jako po
prostu jakieś miejsce w pamięci, które równie dobrze może być wskaźnikiem
do int'a? A może moje przypuszczenia są błędne i takie zachowanie jest "mile
widziane" (nie wiedziałem jakiego słowa tu użyć :)?
Mam nadzieję, że moje pytanie nie jest zbyt lamerskie.
Pozdrawiam!
Gambit