#include <iostream>
using namespace std;
int fun(char *arr) {
return sizeof(arr);
}
int fun2(char arr[3]) {
return sizeof(arr); // It's treating the array name as a pointer to the first element here too
}
int fun3(char (&arr)[6]) {
return sizeof(arr);
}
int main() {
char arr[] = {'a','b','c', 'd', 'e', 'f'};
cout << fun(arr); // Returns 4, it's giving you the size of the pointer
cout << endl << fun2(arr); // Returns 4, see comment
cout << endl << fun3(arr);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKaW50IGZ1bihjaGFyICphcnIpIHsKCXJldHVybiBzaXplb2YoYXJyKTsKfQoKaW50IGZ1bjIoY2hhciBhcnJbM10pIHsKCXJldHVybiBzaXplb2YoYXJyKTsgLy8gSXQncyB0cmVhdGluZyB0aGUgYXJyYXkgbmFtZSBhcyBhIHBvaW50ZXIgdG8gdGhlIGZpcnN0IGVsZW1lbnQgaGVyZSB0b28KfQoKaW50IGZ1bjMoY2hhciAoJmFycilbNl0pIHsKCXJldHVybiBzaXplb2YoYXJyKTsKfQoKCmludCBtYWluKCkgewoJCgljaGFyIGFycltdID0geydhJywnYicsJ2MnLCAnZCcsICdlJywgJ2YnfTsKCQoJY291dCA8PCBmdW4oYXJyKTsgLy8gUmV0dXJucyA0LCBpdCdzIGdpdmluZyB5b3UgdGhlIHNpemUgb2YgdGhlIHBvaW50ZXIKCQoJY291dCA8PCBlbmRsIDw8IGZ1bjIoYXJyKTsgLy8gUmV0dXJucyA0LCBzZWUgY29tbWVudAoJCgljb3V0IDw8IGVuZGwgPDwgZnVuMyhhcnIpOwoJCglyZXR1cm4gMDsKfQ==