2015-08-20 4 views
1

Я создал структуру, содержащую несколько строк:Отправить структуру, содержащую строку по UDP

typedef struct sc_message { 
    int32_t across_conf; 
    char domain[16]; 
    char fl_phase[16]; 
} sc_message; 

Я всегда считал, что char массивы, как и любые другие массивы в C, на самом деле были указатели на первый байт строки.

Я инициирую строки с помощью функции strncpy(), и я использую эту структуру как сообщение для отправки с помощью функции sendto().

Результат отлично работает, я проанализировал пакеты, отправленные программой с Wireshark, содержимое строк отправлено.

Но когда я снова прочитал свой код, я понял, что, согласно моей предыдущей теории, только адреса указателей хранятся в структуре и должны быть отправлены, а не сам контент. Видимо, я ошибаюсь, или я что-то упускаю.

Может ли кто-нибудь объяснить, как это возможно?

+1

Массивы не являются указателями! –

+0

Я думал, что переменная 'char []' может рассматриваться как переменная 'char *'. – Raspbeguy

ответ

1

Если вы добавите массив в качестве члена в struct, массив фактически включен в struct, а не только указатель на массив.

Есть много различий и сходства между массивами и указателями, вы можете найти ответы на многие вопросы здесь: http://c-faq.com/aryptr/

+0

Спасибо, я многому научился со ссылкой, которую вы опубликовали, что отвечает именно на мой вопрос. – Raspbeguy

Смежные вопросы