结构体嵌套,指针形参,引用传参

 1 #include<iostream>
 2 #include<string>
 3 using namespace std;
 4
 5
 6 struct Student
 7 {
 8     int s_id;
 9     string s_name;
10     int s_phonenum;
11 };
12
13 struct Teacher
14 {
15     int m_id;
16     string m_name;
17     Student m_stu;//班长
18     Student starr[50];//班级学生
19 };
20 void showinfo1(const Teacher *ter)//指针形参,加了const修饰指针,保证该函数不修改实参的值
21 {
22     cout << "老师姓名: " << ter->m_name << endl;
23     cout << "班级1号学生的电话: " << ter->starr[0].s_phonenum << endl;
24 }
25
26 void showinfo2( Teacher &ter)//引用传参
27 {
28     cout << "老师姓名: " << ter.m_name << endl;
29     cout << "班级1号学生的电话: " << ter.starr[0].s_phonenum << endl;
30 }
31
32 int main()
33 {
34     Student stu = { 1,"zhangsan",1467888 };
35     Student syuarr[3] =
36     {
37         {2,"2hao同学",12222222},
38         {3,"3#tongxue",1333333},
39         {4,"4#tongxue",1444443}
40     };
41
42     Teacher ter;
43     ter.m_id = 12;
44     ter.m_name = "wang";
45     ter.m_stu = stu;
46     ter.starr[0] = syuarr[1];
47
48     showinfo1(&ter);
49     showinfo2(ter);
50
51     system("pause");
52     return 0;
53 }

原文地址:https://www.cnblogs.com/rtblogs/p/12000733.html

时间: 2024-11-05 19:26:12

结构体嵌套,指针形参,引用传参的相关文章

黑马程序员---C基础12【结构体数组】【结构体指针】【结构体嵌套】【作为函数参数】【枚举类型】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- [结构体数组] 1.结构体数组: 结构体数组的每一个元素都是具有相同结构类型的下标结构变量:(可以表示一个群体,一个班学生档案) 2.结构数组定义: 定义格式: struct    结构名{ 成员列表: }数组名[数组长度]: 1 1)定义结构体的同时定义数组: 2 3 struct stu{ 4 5 int num; 6 7 char name[10]; 8 9 int age; 10 11

C 结构体嵌套一级指针 二级指针 动态分配内存

#define _CRT_SECURE_NO_WARNINGS #include <stdlib.h> #include <string.h> #include <stdio.h> //结构体嵌套一级指针 二级指针 动态分配内存 typedef struct _Teacher { int age; int id; char *title; char **pStuarray; char name[64]; }Teacher; //打印结构体 void printfTeac

黑马程序员 C语言-枚举,结构体,指针

一.枚举 ※枚举变量的定义 前面只是定义了枚举类型,接下来就可以利用定义好的枚举类型定义变量. 跟结构体一样,有3种方式定义枚举变量 1.先定义枚举类型,再定义枚举变量 enum Season {spring, summer, autumn, winter}; enum Season s; 2.定义枚举类型的同时定义枚举变量 enum Season {spring, summer, autumn, winter} s; 3.省略枚举名称,直接定义枚举变量 enum {spring, summer

指针 指针与数组 指针与字符串 指针与函数 结构体与指针 宏

指针 指针与数组 指针与字符串 指针与函数?? 指针与数组 1.数组名:数组元素首地址 eg: int array[3]={1,3,6}; 这里array 恒等于&array[0] 2.int *p = a; int *p = 0; int a[]={0}; 3.int *p = a; 均指向数组的首地址 *p是? *(p+1)是?(*p)+1是? *(p+1)决定向下移动几个字节是类型 4.指针可以当数组名使用 p[1] = 3; 恒等于a[1] ;恒等于*(p+1);恒等于*(a+1) 5.

C#调用C++ 平台调用P/Invoke 结构体--结构体嵌套【八】

普通的结构体嵌套很简单,C#中直接定义成对应的结构体即可,这里介绍的是嵌套的结构体以指针的方式表达 [1]嵌套结构体指针 C++代码: typedef struct _testStru10Pre { int iVal; }testStru10Pre; typedef struct _testStru10 { testStru10Pre *pPre; long lVal; _testStru10() { pPre = NULL; } }testStru10; EXPORTDLL_API void

结构体嵌套结构体名

转自:http://atu82.bokee.com/6706799.html 前一段时间在看DDK中例子的时候,看到这样的的结构体定义: typedef struct _COMMON_DEVICE_DATA { PDEVICE_OBJECT Self; BOOLEAN IsFDO; ...... } COMMON_DEVICE_DATA, *PCOMMON_DEVICE_DATA; typedef struct _PDO_DEVICE_DATA { COMMON_DEVICE_DATA; //

C#将结构体和指针互转的方法

1. 功能及位置 将数据从托管对象封送到非托管内存块,属于.NET Framework 类库 命名空间:System.Runtime.InteropServices 程序集:mscorlib(在 mscorlib.dll 中) 2. 语法 C#: [ComVisibleAttribute(true)] public static void StructureToPtr (Object structure,IntPtr ptr,bool fDeleteOld); C++: [ComVisibleA

结构体指针数组和结构体数组指针的区别

对于初学者的我来说,面对又是数组又是结构体还有指针,一下子就蒙了,在网上查找资料也没有相应的介绍,经过我的测试终于明白了其中的猫腻:结构体数组指针 *[]struct:结构体数组指针的指针是数组的指针,即表示数组的地址,数组里面存放的是结构体类型结构体指针数组 []*struct:即指针表示结构体的地址,数组里面存放的是结构体的指针有什么解释不对的地方请指正 代码测试:package mainimport ( "fmt") type XCDataStu struct { Id int

深入了解Windows句柄到底是什么(句柄是逻辑指针,或者是指向结构体的指针,图文并茂,非常清楚)good

总是有新入门的Windows程序员问我Windows的句柄到底是什么,我说你把它看做一种类似指针的标识就行了,但是显然这一答案不能让他们满意,然后我说去问问度娘吧,他们说不行网上的说法太多还难以理解.今天比较闲,我上网查了查,光是百度百科词条“句柄”中就有好几种说法,很多叙述还是错误的,天知道这些误人子弟的人是想干什么. 这里我列举词条中的关于句柄的叙述不当之处,至于如何不当先不管,继续往下看就会明白: 1.windows 之所以要设立句柄,根本上源于内存管理机制的问题—虚拟地址,简而言之数据的