У меня возникли проблемы, когда я не могу понять, как работает определенная строка кода. По некоторым причинам это просто не щелкает. Эта строка кода обычно используется для абстрагирования файловых дескрипторов в доменных сокетах Unix.
Контекст:
typedef struct myStruct {
char charArray[10];
} myStruct;
myStruct myStructure;
myStruct *ptrToStruct = &myStructure;
/* This should change myStructure.charAarray[0] to equal a */
*(ptrToStruct.charArray) = 'a';
Я понимаю, что массив по сути является указателем, который указывает на первый индекс в массиве, но указатель не имеет данных (charArray
).
Причина, по которой мне так трудно это понять, заключается в том, что ptrToStruct
пытается получить доступ к элементу данных указателя charArray
, но у указателя нет элемента данных charArray
, а затем он разыменовывает его.
Это что-то вроде (*ptrToStruct).(*charArray) = 'a'
? Но оператор разыменования исключается? Я прошу прощения за то, что вообще неясно.
ОБНОВЛЕНИЕ : На вопрос дан ответ. Я неправильно читал код, код был на самом деле *(myStructure.charArray)
, и именно так он изменял первый индекс массива. Я должен был также понять это, потому что, как объяснил Сид, указатели не имеют оператора .
.