JavaShuo
栏目
标签
(60) 结构体指针、结构体变量嵌套、结构体指针嵌套、函数指针、数组指针、指针数组、typedef 综合运用
时间 2019-12-13
标签
结构
指针
变量
嵌套
函数
数组
typedef
综合
运用
繁體版
原文
原文链接
#include<stdio.h>
#include<iostream>
#include<malloc.h>
/*
author : 吴永聪
program: 结构体指针、结构体变量嵌套、结构体指针嵌套、函数指针、数组指针、指针数组、typedef 综合运用
date : 2017.6.3
sum up : 结构体嵌套指针(函数指针、结构体指针、数组指针等)的时候须要为这个嵌套的指针指向一个合适的地址,该地址应为嵌套的指针地址
关键的一句话 注意区分两个p3的不一样点 第一个p3只是一个结构体里的成员【变量名】 第二个p3表明的是一个结构体【地址值】
*/
typedef unsigned int os;
typedef struct Manager
//第三层结构体
{
os age;
os sex;
void (*Manage)();
}Manager,*pManage;
typedef struct Teacher
//第二层结构体
{
os age;
os sex;
void (*Teach)();
Manager manager;
pManage p3;
//嵌套结构体指针 在使用p3以前要先 对其初始化
}Teacher,*pTeacher;
typedef struct Student{
//第一层结构体
os age;
os sex;
char *name;
os (*array)[5];
//数组指针
os *array1[10];
//指针数组
void (*Learn)();
//函数指针
Teacher teacher;
//嵌套结构体普通类型
pTeacher p2;
//嵌套结构体指针 在使用p2以前要先 对其初始化
}Student,*pStu;
void Manage()
{
printf("I am a manager\n");
}
void Teach()
{
printf("I am a teacher\n");
}
void Learn()
{
printf("I am a student\n");
}
os array[5]={0};
int main(_In_ int _Argc, _In_reads_(_Argc) _Pre_z_ char ** _Argv, _In_z_ char ** _Env)
{
Student student;
//(1)typedef定义普通类型名
pStu p1=(pStu)malloc(sizeof(Student));
pTeacher p2=(pTeacher)malloc(sizeof(Teacher));
pManage p3=(pManage)malloc(sizeof(Manager));
char *name1="wyc";
char a[]={'w','y','c'};
os c=3;
Teacher t;
t.Teach=Teach;
t.Teach();
//(2)typedef定义结构体指针,在使用以前须要先初始化结构体指针
p1->age=3;
p1->sex=4;
p1->Learn=Learn; //函数指针
p1->Learn();//函数指针
p1->name=name1;
p1->name=a;
//(3)结构体里面嵌套普通结构体变量 二重嵌套
p1->teacher.Teach=Teach;
p1->teacher.Teach();
(*p1).Learn();
//用*p的形式表明对一大片内存操做 等同于 Student stu
//(4)结构体指针嵌套结构体指针 二重嵌套
p1->p2=p2;//关键的一句话
//p1->p2->Teach=Teach;
//p1->p2->Teach();
(*p1).p2->Teach=Teach;
(*((*p1).p2)).Teach();
//(5)结构体指针嵌套结构体指针嵌套结构体普通变量 三重嵌套
((p1->teacher).manager).Manage=Manage;
p1->teacher.manager.Manage();
//(6)结构体指针嵌套结构体指针嵌套结构体指针 三重嵌套
p1->p2->p3=p3;
//关键的一句话 注意区分两个p3的不一样点 第一个p3只是一个结构体里的成员【变量名】 第二个p3表明的是一个结构体【地址值】
p1->p2->p3->Manage=Manage;
p1->p2->p3->Manage();
//(7)结构体访问数组指针
p1->array=&array;
//(8)结构体访问指针数组
p1->array1[0]=&c;
p1->array1[1]=&c;
p1->array1[2]=&c;
p1->array1[3]=&c;
free(p1);
free(p2);
free(p3);
system("pause");
return 0;
}
相关文章
1.
结构体指针变量含义,结构体指针函数
2.
数组指针&指针数组、函数指针&指针函数、结构体指针&结构体内函数指针的使用和区分--C
3.
指针、数组、结构体
4.
C语言基础———指针,结构体指针,函数指针
5.
函数指针结构体
6.
结构体、函数指针
7.
结构体嵌套二级指针
8.
指向结构体数组的指针
9.
结构体指针数组和结构体数组指针的区别
10.
结构体(结构体嵌套、结构体指针、结构体参数传递)
更多相关文章...
•
Swift 结构体
-
Swift 教程
•
Rust 结构体
-
RUST 教程
•
算法总结-双指针
•
Flink 数据传输及反压详解
相关标签/搜索
函数+指针
指针
指导方针
指针式
C和指针
指南针
双指针
指北针
转-悬空指针,野指针
网站建设指南
Redis教程
PHP 7 新特性
架构
数据传输
数据库
0
分享到微博
分享到微信
分享到QQ
每日一句
每一个你不满意的现在,都有一个你没有努力的曾经。
最新文章
1.
如何将PPT某一页幻灯片导出为高清图片
2.
Intellij IDEA中使用Debug调试
3.
build项目打包
4.
IDEA集成MAVEN项目极简化打包部署
5.
eclipse如何导出java工程依赖的所有maven管理jar包(简单明了)
6.
新建的Spring项目无法添加class,依赖下载失败解决:Maven环境配置
7.
记在使用vue-cli中使用axios的心得
8.
分享提高自己作品UI设计形式感的几个小技巧!
9.
造成 nginx 403 forbidden 的几种原因
10.
AOP概述(什么是AOP?)——Spring AOP(一)
本站公众号
欢迎关注本站公众号,获取更多信息
相关文章
1.
结构体指针变量含义,结构体指针函数
2.
数组指针&指针数组、函数指针&指针函数、结构体指针&结构体内函数指针的使用和区分--C
3.
指针、数组、结构体
4.
C语言基础———指针,结构体指针,函数指针
5.
函数指针结构体
6.
结构体、函数指针
7.
结构体嵌套二级指针
8.
指向结构体数组的指针
9.
结构体指针数组和结构体数组指针的区别
10.
结构体(结构体嵌套、结构体指针、结构体参数传递)
>>更多相关文章<<