-- 作者:admin
-- 发布时间:2008/12/4 6:29:30
-- 关于结构体的第二次课件
1 最为简单的使用方法 #include <string.h> #include <stdio.h>
struct student{ long num; char name[20]; char sex; float score; };
void main() { struct student stu1={1001,"黎明",\'M\',78.5}; struct student *p; p=&stu1; printf("学号是%d,姓名是%s,性别是%c,分数是%f\\n",p->num,p->name,p->sex,p->score); }
数组指针的回顾 #include <string.h> #include <stdio.h>
void main() { int i=1; int *p1=&i; //printf("i=%d\\n",*p1);
int array[3]={100,200,300}; int *p2=array; //printf("array[1]=%d\\n",*(p2+1)); //printf("array[1]=%d\\n",p2[1]); //printf("array[1]=%d\\n",*(array+1)); }
指向结构体数组的指针 #include <string.h> #include <stdio.h>
struct student{ long num; char name[20]; char sex; float score; };
void main() { struct student stus[]={{1001,"黎明",\'M\',78.5},{1002,"胡哥",\'M\',90},{1003,"白雪",\'F\',81.5}}; struct student * p1=stus; //printf("stus[1]的姓名是%s\\n",stus[1].name); //printf("stus[1]的姓名是%s\\n",(*(p1+1)).name); //printf("stus[1]的姓名是%s\\n",p1[1].name); //printf("stus[1]的姓名是%s\\n",stus[1].name); }
2 使用结构体参数的函数 回顾函数参数的使用 #include <string.h> #include <stdio.h>
void func(int);
void main() { int i=0; func(i); printf("i=%d\\n",i); }
void func(int i) { i=1; }
回顾指针函数参数的使用 #include <string.h> #include <stdio.h>
void func(int *);
void main() { int i=0; int *p=&i; func(p); printf("i=%d\\n",i); }
void func(int * p) { *p=1; }
数组参数类似于指针参数 #include <string.h> #include <stdio.h>
void func(int *);
void main() { int i[]={0,0,0}; int *p=i; func(p); printf("i[0]=%d\\n",i[0]); }
void func(int * p) { *p=1; //p[0]=1 }
使用一般的结构体变量参数 #include <string.h> #include <stdio.h>
struct student{ long num; char name[20]; char sex; float score; };
void func(struct student);
void main() { struct student stu={1001,"黎明",\'M\',78.5}; func(stu); printf("学号是%d,姓名是%s\\n",stu.num,stu.name); }
void func(struct student stu) { strcpy(stu.name,"张三"); //printf("学号是%d,姓名是%s\\n",stu.num,stu.name); }
使用结构体指针参数 #include <string.h> #include <stdio.h>
struct student{ long num; char name[20]; char sex; float score; };
void func(struct student *);
void main() { struct student stu={1001,"黎明",\'M\',78.5}; func(&stu); printf("学号是%d,姓名是%s\\n",stu.num,stu.name); }
void func(struct student *stu) { strcpy(stu->name,"张三"); //printf("学号是%d,姓名是%s\\n",stu->num,stu->name); }
请问结果是什么? #include <string.h> #include <stdio.h>
struct student{ long num; char name[20]; char sex; float score; };
void func(struct student *);
void main() { struct student stu={1001,"黎明",\'M\',78.5}; func(&stu); printf("学号是%d,姓名是%s\\n",stu.num,stu.name); }
void func(struct student *stu) { struct student newStu={1002,"胡哥",\'M\',90}; stu=&newStu; strcpy(stu->name,"张三"); }
[此贴子已经被作者于2010-12-13 20:05:56编辑过]
|