Адресная информация Winsock 2 * результат?

Я изучаю C++ с помощью интерактивных учебных пособий, таких как cprogramming. .com, и решил создать простую программу для сокетов в качестве своего первого реального проекта. Я уже поэкспериментировал с основными функциями и понял, как работает C++. Я только что столкнулся с чем-то в прохождении MSDN Winsock2, что меня смутило.

На этой странице , из структуры sddrinfo объявляется объект с именем hints:

struct addrinfo *result = NULL,
                *ptr = NULL,
                hints;

Меня смущают части *result и *ptr = null этого объявления. Поскольку точки с запятой нет, я предполагаю, что новые строки предназначены для удобства чтения, и этот код можно написать так.

struct addrinfo *result = NULL, *ptr = NULL, hints;

Похоже, что мы объявляем два указателя, которые указывают на структуру addrinfo, и устанавливаем для них значение null вместе с объявлением объекта подсказок. Может кто-нибудь объяснить цель установки их на NULL? И если кто-то знаком с winsock, можете ли вы объяснить, как и почему используются эти указатели? Почему бы просто не использовать объект hints?


person Nick    schedule 16.12.2013    source источник
comment
getaddrinfo.   -  person IInspectable    schedule 17.12.2013
comment
Вы смелы, программируете сокеты для своего первого проекта на C++ :-)   -  person Cameron    schedule 17.12.2013
comment
@IInspectable Спасибо, это очень помогает объяснить назначение указателей.   -  person Nick    schedule 17.12.2013


Ответы (1)


Эта строка объявляет несколько переменных в одной строке. Это то же самое, что и это

struct addrinfo *result = NULL;
struct addrinfo *ptr = NULL;
struct addrinfo hints;

Программисты устанавливают указатели в NULL, так что если вы случайно разыменуете их, вы вызовете исключение и найдете свою ошибку. Если вы не инициализируете их, они будут указывать на мусор, который может привести к сбою вашего приложения коварным образом.

person Paladine    schedule 16.12.2013
comment
Или, в C++, это будет addrinfo *result = NULL; и т. д. - person IInspectable; 17.12.2013
comment
структура addrinfo* результат = NULL; структура addrinfo* ptr = NULL; означало бы это то же самое? struct addrinfo подсказки; - person Alex_Nabu; 12.09.2014