Chinaunix首页 | 论坛 | 博客
  • 博客访问: 359716
  • 博文数量: 57
  • 博客积分: 2299
  • 博客等级: 大尉
  • 技术积分: 1109
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-27 23:12
文章分类
文章存档

2011年(4)

2010年(53)

分类: C/C++

2010-03-06 16:06:55

今天又在一个地方发生错误了,C语言的东西,现在复习下
 

#include<stdio.h>
int main()
{
  struct student
  {
    int number;
    char name[20];
    char sex;
    int age;
    char addr[30];
  };
  struct stu1{
    int num;
    char name;
    struct student;
  }py[2];
 
  struct student s[3] = { {10000,"Zhang",'m',21,"Shang Hai"},
    {10001,"Li",'f',20,"Bei Jing"},
    {10002,"Liu",'m',22,"Guang Dong"} };
    
    struct student *p;
//定义结构体指针,其指向结构体的首地址,需要注意的是其没有成员,故不可以直接引用student里面的成员,这是我经常发生的错误,切忌

    printf("number%d\n",p->addr);//此处错误,还未获得成员
   for(p=s; p<s+3; p++)
      printf("%d,%s,%c,%d,%s\n",p->number,p->name,p->sex,p->age,p->addr); 

    printf("number_add%d\n",p->addr) ;//正确,已经指向了定义了的结构体首部,可以引用成员了!
    return 0;
}


想要再次提醒一下自己,struct student *p;是声名一个结构体指针,只是一个指针,指向一个结构为student的结构体,里面还没有成员,故不能引用里面的成员,否则将会出现段错误的执行错误,并且这种错误在编译的时候不会有问题,执行程序时才会出现错误。

以前经常会犯这样的错误,定义一个 结构体指针struct student *p;然后直接引用里面的成员,编译时候没错,执行时就发飙了,切忌切忌

阅读(1286) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~