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.
Appium入門
2.
Spring WebFlux 源碼分析(2)-Netty 服務器啓動服務流程 --TBD
3.
wxpython入門第六步(高級組件)
4.
CentOS7.5安裝SVN和可視化管理工具iF.SVNAdmin
5.
jedis 3.0.1中JedisPoolConfig對象缺少setMaxIdle、setMaxWaitMillis等方法,問題記錄
6.
一步一圖一代碼,一定要讓你真正徹底明白紅黑樹
7.
2018-04-12—(重點)源碼角度分析Handler運行原理
8.
Spring AOP源碼詳細解析
9.
Spring Cloud(1)
10.
python簡單爬去油價信息發送到公衆號
本站公眾號
歡迎關注本站公眾號,獲取更多信息
相關文章
1.
結構體指針變量含義,結構體指針函數
2.
數組指針&指針數組、函數指針&指針函數、結構體指針&結構體內函數指針的使用和區分--C
3.
指針、數組、結構體
4.
C語言基礎———指針,結構體指針,函數指針
5.
函數指針結構體
6.
結構體、函數指針
7.
結構體嵌套二級指針
8.
指向結構體數組的指針
9.
結構體指針數組和結構體數組指針的區別
10.
結構體(結構體嵌套、結構體指針、結構體參數傳遞)
>>更多相關文章<<