struct可由多个数据类型构成,初步看起来应该类似数组,变量本身是一个指向首字节的指针,无法直接通过此指针赋值struct,在函数中声明为自动变量时,也无法返回此指针所指向的值。 但事实上就并非如此,struct之间可以直接赋值,使用指针指向其地址时需要使用”&”,函数中声明为自动变量时可以直接return其值。 那struct变量本身到底是何? 写了这样一个东西,运行后瞬间明白:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
#include <stdio.h> #include <string.h> struct my_struct { unsigned char ch1; unsigned char ch2; unsigned char ch3; unsigned char ch4; }; int main() { struct my_struct struct1; memset(&struct1, 0, sizeof(struct my_struct)); printf("%u\n", struct1); struct1.ch1 = 0xFF; printf("%u\n", struct1); struct1.ch2 = 0xFF; printf("%u\n", struct1); struct1.ch3 = 0xFF; printf("%u\n", struct1); struct1.ch4 = 0xFF; printf("%u\n", struct1); return 0; } |
struct变量就和基本类型,int, char等一样,直接指向其值,而且struct有多少字节,那个值就有多少字 […]