#cpp
Как работают указатели? Что будет в итоге, если я напишу так? HANDLE * VariableHandle; DWORD * VariableDword; или так? HANDLE VariableHandle; DWORD VariableDword; Пример из исходных кодов других программ. Почему так? int chSizeOfArray(char *chArray); int iSizeOfArray(int *iArray); А не так? int chSizeOfArray(char chArray); int iSizeOfArray(int iArray);
Ответы
Ответ 1
Когда вы пишете HANDLE * VariableHandle;, вы объявляете, что в переменной VariableHandle будет содержаться указатель на HANDLE. А объявление HANDLE VariableHandle; означает, что в переменной VariableHandle будет содержаться сам HANDLE. В языках типа C указатель используется во многих смыслах. Один из них — это массив элементов. Функции int f1(char *chArray); и int f2(char ch); обе возможны, но при этом f1 принимает в качестве аргумента массив char'ов (или указатель на один char, это уж как в документации написано), а f2 — один char. Как верно подсказывает @ixSci, лучше всего думать про указатель как про адрес объекта. Если представить себе всю память как огромный массив байт, адрес — это просто номер начального байта, занимаемого данными, в этом массиве. (Это несколько упрощённая картина, но для начала то, что нужно.)
Комментариев нет:
Отправить комментарий