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