通过UDP发送包含字符串的结构

时间:2015-08-20 07:46:47

标签: c string pointers struct 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 :(得分:1)

如果在struct中添加数组作为成员,则数组实际上包含在struct中,而不仅仅是指向数组的指针。

数组和指针之间存在许多差异和相似之处,您可以在此处找到许多常见问题的答案:http://c-faq.com/aryptr/