C中指针的变量赋值
variable assignment from pointers in C
我有一个缓冲区,其中包含结构的原始信息。我想创建一个接收缓冲区的函数,以及 returns 所述类型的结构。
my_struct func(uin8t_t* buf){
uin8t_t field1 = *buf;
uin8t_t[3] = *(buf + 1);
...
return
}
假设field1和field2是结构中的字段,field1的值是buf的第一位,field2的值是buf的第2、3、4字节吗?
概括问题:变量赋值是否只是从变量类型指定的值中获取预期的位数?
谢谢
执行作业时,可能会发生两种情况:
您的变量具有相同的类型,其中 sizeof(type) 个字节从一个内存位置复制到另一个内存位置(这是您的情况,大小为 1)。
赋值涉及的变量数据类型不同,出现隐式强制转换的情况。作为一般经验法则,您可以认为复制的字节数是所涉及的 2 个变量大小中的最小值。
请注意,如果您尝试将赋值 to/from 设为结构变量,则必须考虑其成员之间的最终填充。
假设 field2 确实是第二个声明为:
uin8t_t field2[3] = *(buf + 1);
该行不会将 3 个字节复制到 field2 数组中,很可能是语法错误。 Memcpy 可能是更好的选择。
我有一个缓冲区,其中包含结构的原始信息。我想创建一个接收缓冲区的函数,以及 returns 所述类型的结构。
my_struct func(uin8t_t* buf){
uin8t_t field1 = *buf;
uin8t_t[3] = *(buf + 1);
...
return
}
假设field1和field2是结构中的字段,field1的值是buf的第一位,field2的值是buf的第2、3、4字节吗?
概括问题:变量赋值是否只是从变量类型指定的值中获取预期的位数?
谢谢
执行作业时,可能会发生两种情况:
您的变量具有相同的类型,其中 sizeof(type) 个字节从一个内存位置复制到另一个内存位置(这是您的情况,大小为 1)。
赋值涉及的变量数据类型不同,出现隐式强制转换的情况。作为一般经验法则,您可以认为复制的字节数是所涉及的 2 个变量大小中的最小值。
请注意,如果您尝试将赋值 to/from 设为结构变量,则必须考虑其成员之间的最终填充。
假设 field2 确实是第二个声明为:
uin8t_t field2[3] = *(buf + 1);
该行不会将 3 个字节复制到 field2 数组中,很可能是语法错误。 Memcpy 可能是更好的选择。