在C语言中,指向结构体对象的指针变量既可以指向结构体变量,也可指向结构体数组中的元素。
指针变量的基类型必须与结构体变量的类型相同。
C语言中允许
(*p).num用p->num来代替
->代表一个箭头
p->num表示p所指向的结构体变量中的num成员
C语言指向结构体数组的指针
(++p)->num
先使p自加1,然后得到p指向的元素中的num成员值。
(p++)->num
先求的p->num的值,然后再使p自加1。
C语言用结构体变量和结构体变量的指针作函数参数
用结构体变量的成员作参数,用法和用普通变量作实参是一样的,属于“值传递”方式。应当注意实参与形参的类型保持一致。
用结构体变量作实参。用结构体变量作实参时,采取的也是“值传递”的方式,将结构体变量所占的内存单元的内容全部按顺序传递给形参,形参也必须是同类型的结构体变量。
用指向结构体变量(或数组元素)的指针作实参,将结构体变量的地址传给形参。
C语言使用结构体指针输出生日
#include
#include
struct Age
{
int year;
int month;
int day;
};
struct Student
{
char name[20];//姓名
struct Age birthday; //生日
};
int main(void)
{
struct Student student1; //定义结构体变量student1
struct Student *point =NULL; //定义一个指向Student结构体类型的指针变量point
point = &student1;//point指向结构体变量student1的首地址, 即第一个成员的地址
strcpy((*point ).name,"闫小林");//(*point).name等价于student1.name
(*point ).birthday.year =1989;
(*point ).birthday.month =4;
(*point ).birthday.day =29;
printf("姓名:%s\\n", (*point ).name);//(*point).name不能写成point
printf("生日:%d-%d-%d\\n", (*point).birthday.year, (*point).birthday.month, (*point).birthday.day);
return 0;
}
编译运行结果:
姓名:闫小林
生日:1989-4-29
--------------------------------
Process exited after0.04992 secondswith return value0
请按任意键继续. . .
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。
举报投诉
-
C语言
+关注
关注
180文章
7533浏览量
128770 -
指针
+关注
关注
1文章
473浏览量
70363 -
结构体
+关注
关注
1文章
125浏览量
10750
发布评论请先 登录
相关推荐
嵌入式linux学习笔记20160822-每天进步一点点,向嵌入式进军-C语言指针/结构体
->C语言/C++学习指南(语法篇)入门到精通,作者是邵方,是根据他写的C语言/
发表于 08-22 11:32
单片机C语言 -- 基于结构体的面向对象编程技巧
1、Keil4 C51工程网址:2、需要一定的C语言基础,才看得懂此文。一、面向对象单片机C语言的面向对象编程,是利用
发表于 02-04 21:48
C语言结构体对函数指针封装示例
C语言结构体对函数指针封装示例示例:#include int i, j;struct DATE{ int year; char month;
发表于 07-15 06:18
评论