我创建了一个包含一些字符串的结构:
typedef struct sc_message {
int32_t across_conf;
char domain[16];
char fl_phase[16];
} sc_message;
我一直认为char
数组与C中的任何其他数组一样,实际上是指向字符串第一个字节的指针。
我使用strncpy()
函数启动字符串,并将此结构用作与sendto()
函数一起发送的消息。
结果很完美,我用Wireshark分析了程序发送的数据包,字符串内容被有效发送。
但是当我再次阅读我的代码时,我意识到,根据我之前的理论,只有指针的地址存储在结构中并且应该被发送,而不是内容本身。显然我错了,或者我错过了什么。
有人可以解释一下这是怎么回事吗?
答案 0 :(得分:1)
如果在struct
中添加数组作为成员,则数组实际上包含在struct
中,而不仅仅是指向数组的指针。
数组和指针之间存在许多差异和相似之处,您可以在此处找到许多常见问题的答案:http://c-faq.com/aryptr/