struct fa
{
int number
char name[20]
char sex
int age
float score
}
int main()
{
struct fa a[1]={1001,"lee",'m',25,90.3}
struct fa * q
q=&a[0]
printf("Number=%d\n",(*q).number)
printf("Name=%s\n",(*q).name)
printf("Sex=%c\n",(*q).sex)
printf("Age=%d\n",(*q).age)
printf("Score=%f\n",(*q).score)
}
简单的就是这样。先定义结构体,然后给机构体进行赋值,把结构体的地址存储到指针。最后通过指针输出结构题的数据
1、printf("B=%d\n",B)这种写法是将B强制转换成int类型,然后打印出来,即把B最开始的4个字节按照int类型来打印,B的最开始是mahj,内存里面放的即0x6D61686A,转换成10进制就是1785225581这个东东了。至于*C和*(C+1),printf("*C=%c,*(C+1)=%c\n",*C,*(C+1))这种写法会把C当成int *类型,所以C+1就变成了第五个字符,打印出来的就是K了,没有矛盾的。
2、相同的结构体变量是可以这么赋值的,所以说’=‘确实完成了复杂的操作。这个可以看具体的编译出来的汇编指令就行了。
struct stu{
char name[20]
long number
float score[4]
}
再定义指向结构体类型变量的指针变量:
struct stu *p1, *p2
定义指针变量p 1、p 2,分别指向结构体类型变量。引用形式为:指针变量→成员;