C语言指向结构体变量的指针

Python014

C语言指向结构体变量的指针,第1张

#include<stdio.h>

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,分别指向结构体类型变量。引用形式为:指针变量→成员;