网站首页 > 基础教程 正文
然后我们来看结构体指针.
?
可以看到我们先去定义一个结构体
?
然后我们在main函数中,去声明一个结构体
s
然后我们定义一个指针
int *p = &s;
指向这个结构体变量.
?
这里要注意,我们说,对于int a=3;
我们定义 int * p =&a;
这样是可以的,但是对于结构体来说,定义指针的时候,也需要指定类型是结构体
struct student * p =&s;
这样来定义一个结构体的指针.
?
可以看到我们定义了一个*p 这个student的结构体的指针.
?
然后我们再通过,这个结构体指针把这个结构体的值,打印出来
p->name 等等,注意,结构体在c++中取值,是通过-> 这样的写法.
?
注意因为name是string类型的,所以这里要引入
#include <string>
?
然后执行一下看看结果,已经可以通过指针获取结构体的内容了.
?
?
然后我们再去看一下,结构体的嵌套
?
我们要在老师结构体中,嵌套一个学生结构体
?
可以看到,上面我们定义一个老师结构体
老师结构体中定义一个stu,学生结构体
?
但是要注意,我们的学生结构体,定义的时候一定要定义到
老师结构体的上面,因为要先定义才能使用.
?
可以看到定义好学生结构体以后,就不报错了.
?
然后我们在main方法中,创建一个老师的结构体,然后赋值.
?
然后我们打印出来结构体的内容去看看
?
可以看到碰到string,需要
#include <string>
?
?
上面是结构体嵌套的内容.
?
然后我们再来看,结构体做函数的参数怎么用.
?
我们要做一个学生结构体,然后将这个学生结构体,传入到一个参数,然后打印这个学生的信息.
?
可以看到上面是定义的学生的结构体.
?
然后我们上面定义了一个结构体变量,在main方法中
?
用到了string导入string包
?
然后执行打印看看
?
然后我们写一个方法,来打印
比如这个printStudent1,首先我们直接把s这个结构体传进去,而不是将s这个结构体的地址
这种传递方式,叫做值传递.
?
?
可以看到,我们的参数
struct student s
直接就是一个结构体.
?
然后我们,把s这个结构体传入,
?
可以看到结构体中打印出来的内容.
?
然后我们再去看看地址传递.
?
我们把结构体的,地址做为参数传入到方法中去
&s
?
可以看到,printStudent2
这个是,struct student *p 传入的是结构体的指针
然后利用p-> 箭头符号,来获取结构体指针,对应的值.
?
然后传入这个&s 把结构体地址传入进去.
?
然后看看结果
?.
这里注意,如果我们传递的是值,我们在这个打印的方法中,修改,结构体,age的值为100
?
?
然后打印,可以看到,这值,仅仅是在方法内部被修改了,因为是值传递,修改的,是传递过去的,新建的那个结构体的值,也就是传递的时候是把结构体,又创建了一个然后在这个方法内部,
赋值的时候是给这个新的结构体赋值,而
不是我传递过去的那个结构体的值.
?
然后我们在地址传递这个方法中,修改一下
p->age 的值是200;
可以看到
?
这样,打印出来,虽然是在方法内部修改的
age的值,在外面打印出来也是200了,这样才是修改的,原来的那个结构体的值.
?
这个需要注意,这个就是地址传递和值传递的区别.
猜你喜欢
- 2024-12-30 C++ 在编程语言谱系中的位置及其特点
- 2024-12-30 C++基础知识总结(超详细总结) c++ 基础
- 2024-12-30 [面试]C++中struct和class的区别是什么
- 2024-12-30 C++类和C语言的结构体有什么区别?linux C++第18讲
- 2024-12-30 C与C++利用pragma pack对结构体做成员打包对齐设置
- 2024-12-30 结构体所占内存大小 结构体所占内存大小是所有成员所占的内存字节数计算
- 2024-12-30 结构体的各种使用方法详细讲解-c\c++
- 2024-12-30 C++,结构体和类,结构体和类的区别,struct与class的区别
- 2024-12-30 C++编程:复合数据类型—结构体 c语言结构体复数运算
- 2024-12-30 C#与C++交互开发系列之复杂类型传递与解析
- 01-07Python从入门到放弃-详解列表、元组和字典
- 01-07python 中字典如何进行复制
- 01-07python入门023:字典嵌套
- 01-07掌握Python字典的12个例子
- 01-07使用Python 获取多级字典(Json)格式所有Key、Value
- 01-07简单学Python——字典的操作1(增加、更改和删除字典元素)
- 01-07Python之容器拾遗:Python就是包裹在一堆语法糖中的字典
- 01-07深入了解python字典的有序特性
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)