Функция sizeof вызванная в другой функции выдает неправильное значение - C (СИ)
Формулировка задачи:
Не могу понять, почему функция sizeof вызванная в другой функции выдает неправильное значение.
#include<iostream.h>
#include<iomanip.h>
//ïðîòîòèï ГґГіГ*ГЄГ¶ГЁГЁ êîïèðîâГ*Г*ГЁГї Г¬Г*Г±Г±ГЁГўГ* programCode[] Гў Г¬Г*Г±Г±ГЁГў memory[].
void loadProgramToMemory(short programCode[], short memory[]);
main()
{
short memory[10] = {0};
short programCode[] = {1003, 1103, 4300};
//ГІГіГІ ГґГіГ*ГЄГ¶ГЁГї sizeof Г°Г*áîòГ*ГҐГІ ГЇГ°Г*âèëüГ*Г®
cout << "Size of programCode[] in main(), B: "
<< sizeof programCode << endl << endl;
loadProgramToMemory(programCode, memory);
//âûâîä Г*Г* ГЅГЄГ°Г*Г* ñîäåðæèìîãî Г¬Г*Г±Г±ГЁГўГ* memory[]
cout << "MEMORY:\n";
for (int i = 0; i < 10; i++)
cout << setw(6) << memory[i];
cout << endl;
return 0;
}
//ГґГіГ*ГЄГ¶ГЁГї êîïèðîâГ*Г*ГЁГї Г¬Г*Г±Г±ГЁГўГ* programCode[] Гў Г¬Г*Г±Г±ГЁГў memory[].
void loadProgramToMemory(short programCode[], short memory[])
{
cout << setw(6) << programCode[0]
<< setw(6) << programCode[1]
<< setw(6) << programCode[2] << endl << endl;
//ñîáñòâåГ*Г*Г® Г*ГҐГ*îðìГ*ëüГ*îå ïðîÿâëåГ*ГЁГҐ Гґ-ГЁГЁ sizeof
cout << "Size of programCode[] in other function, B: "
<< sizeof programCode << endl << endl;
// îïðåäåëåГ*ГЁГҐ Г°Г*çìåðГ* Г¬Г*Г±Г±ГЁГўГ* programCode[]
int programSize = sizeof programCode / sizeof (short);
for (int i = 0; i < programSize; i++)
memory[i] = programCode[i];
}
Size of programCode[] in main(), B: 6
1003 1103 4300
Size of programCode[] in other function, B: 4
MEMORY:
1003 1103 0 0 0 0 0 0 0 0
Press any key to continue
Решение задачи: «Функция sizeof вызванная в другой функции выдает неправильное значение»
textual
Листинг программы
sizeof programCode << endl << endl;//!может там была опечатка!? int programSize = sizeof programCode / sizeof (short);//или здесь