标签:
结构体指针变量的概念
当一个指针变量用来指向一个结构体变量时,称之为结构体指针变量。
结构体指针变量的定义
结构体指针变量定义的一般形式为:
struct 结构体类型名 *结构体指针变量名;
例如,有如下结构体类型定义:
#define N 10 /* 10 门课程 */
#define MAXLEN 20 /* 学生姓名最大长度 */
struct student
{
char name[MAXLEN];
int score[N];
} ;
则 , 要定义一个指向 student 的结构体指针变量 pstu , 可写成 :
struct student *pstu;
结构体指针变量的引用
结构体指针变量必须要先赋值后才能使用。赋值时,是把结构体变量的首地址赋给该指针变量. 如:
struct student s, *pstu;
pstu = &s;
定义了结构体指针变量后,访问各成员的一般形式为:
( *结构体指针变量 ).成员名
或为:
结构体指针变量->成员名
例如:
( *pstu ) .name 或者 pstu->name
【例7-1】结构体指针变量的顶替及使用方法。 源程序
/**********************************************************/ /* 程 序 名: samp7_1 . c */
/* 作 者: wqy*/
/* 编制时间: 2016 年 8 月 6 日 */
/* 程序功能:举例说明 结构体指针变量的具体用法 */
/**********************************************************/ #include "stdio.h"
#define N 5 /* 5 门课程 */
#define MAXLEN 20 /* 学生姓名最大长度 */
/************************************/
/* 函 数 名: main */
/* 函数功能:主函数 */
/* 入口参数:无 */
/* 返 回 值:无 */
/************************************/
void main()
{
struct student
{
char name[MAXLEN];
int score[N];
} s1 = { "Li ming", { 80, 75, 90, 78, 89 } }, *p; int i;
/* 用结构体变量访问其成员 */ printf( " 姓名为: %s\n", s1.name ); printf( " 成绩为: " );
for ( i=0; i<N; i++ )
printf( " %d ", s1.score[ i ] );
printf( "\n" );
/* 用结构体指针变量访问结构体成员 */ p = &s1;
printf( " 姓名为: %s\n", p->name ); printf( " 成绩为: " );
for ( i=0; i<N; i++ )
printf( " %d ", p->score[ i ] );
printf( "\n" );
}
指向结构体的指针赋值举例
struct student
{
char name[20];
};
void main()
{
struct student *st[99];
st[5]=(struct student*)calloc(1, sizeof(struct student)); sprintf(st[5]->name, "xyz");
}
标签:
原文地址:http://www.cnblogs.com/CloudWang/p/5744860.html