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编辑过]