内置类型和结构体类型作为函数参数传递时的共同点

2024-01-23 08:38

本文主要是介绍内置类型和结构体类型作为函数参数传递时的共同点,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

结构体类型不同于数组,而结构体类型与内置类型有很多相同之处。数组名代表数组的第一个元素的地址,而结构体名代表的却不是地址而是第一个元素的值。在作为函数参数时,和内置类型一样,可以通过值(结构体名)、引用、指针几种方式传递。而且其传递特点与内置类型一致,例子:

#include <iostream>
using namespace std;
typedef struct Change
{
int m;
int n;
}StrChange;
void Change(int a1);
void YChange(int &b1);
void PChange(int *c1);
void Change1(StrChange ChangeL1 );
void YChange1(StrChange &ChangeM1);
void PChange1(StrChange *ChangeN1);
void main()
{
int a = 1;
int b = 2;
int c = 3;
StrChange ChangeL;
StrChange ChangeM;
StrChange ChangeN;
ChangeL.m = 4;
ChangeL.n = 5;
ChangeM.m =6;
ChangeM.n = 7;
ChangeN.m = 8;
ChangeN.n = 9;
Change(a);     //传值,无法改变
YChange(b);     //引用,可以改变
PChange(&c);    //指针(地址),可以改变
Change1(ChangeL);	//值,无法改变。和基本类型一样,不能通过传值改变,这里不同于数组!
YChange1(ChangeM);	//引用,可以改变
PChange1(&ChangeN);	//指针(地址),可以改变
cout<<"The a is :  "<<a<<endl;
cout<<"The b is :  "<<b<<endl;
cout<<"The c is :  "<<c<<endl;
cout<<"The m in struct L is :  "<<ChangeL.m<<endl;
cout<<"The n in struct L is :  "<<ChangeL.n<<endl;
cout<<"The m in struct M is :  "<<ChangeM.m<<endl;
cout<<"The n in struct M is :  "<<ChangeM.n<<endl;
cout<<"The m in struct N is :  "<<ChangeN.m<<endl;
cout<<"The n in struct N is :  "<<ChangeN.n<<endl;
}
void Change(int a1)
{
a1 = 11;
}
void YChange(int &b1)
{
b1 = 22;
}
void PChange(int *c1)
{
*c1 = 33;
}
void Change1(StrChange ChangeL1 )
{
ChangeL1.m = 44;
ChangeL1.n = 55;
}
void YChange1(StrChange &ChangeM1)
{
ChangeM1.m = 66;
ChangeM1.n =77;
}
void PChange1(StrChange *ChangeN1)
{
ChangeN1->m = 88;
(*ChangeN1).n = 99;
}
 

注意:以结构体名作为参数传递时,同内置类型一样不能对实参做修改。而通过引用和指针则可以修改实参。一定要注意实参与形参的对应关系:

结构体类型与内置类型的比较
 实参形参
内置类型(传值)ab
内置类型(引用)a&b
内置类型(指针)&a*b
结构体类型(传值)

a(数组名)

a(数组名)
结构体类型(引用)a&b
结构体类型(指针)&a*b

另外,C++不支持直接输出结构体名,而用C可以直接输出结构体名,得到的是第一个元素的地址。

这篇关于内置类型和结构体类型作为函数参数传递时的共同点的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/635839

相关文章

Python如何计算两个不同类型列表的相似度

《Python如何计算两个不同类型列表的相似度》在编程中,经常需要比较两个列表的相似度,尤其是当这两个列表包含不同类型的元素时,下面小编就来讲讲如何使用Python计算两个不同类型列表的相似度吧... 目录摘要引言数字类型相似度欧几里得距离曼哈顿距离字符串类型相似度Levenshtein距离Jaccard相

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

Python itertools中accumulate函数用法及使用运用详细讲解

《Pythonitertools中accumulate函数用法及使用运用详细讲解》:本文主要介绍Python的itertools库中的accumulate函数,该函数可以计算累积和或通过指定函数... 目录1.1前言:1.2定义:1.3衍生用法:1.3Leetcode的实际运用:总结 1.1前言:本文将详

Go语言中三种容器类型的数据结构详解

《Go语言中三种容器类型的数据结构详解》在Go语言中,有三种主要的容器类型用于存储和操作集合数据:本文主要介绍三者的使用与区别,感兴趣的小伙伴可以跟随小编一起学习一下... 目录基本概念1. 数组(Array)2. 切片(Slice)3. 映射(Map)对比总结注意事项基本概念在 Go 语言中,有三种主要

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

MySQL数据库函数之JSON_EXTRACT示例代码

《MySQL数据库函数之JSON_EXTRACT示例代码》:本文主要介绍MySQL数据库函数之JSON_EXTRACT的相关资料,JSON_EXTRACT()函数用于从JSON文档中提取值,支持对... 目录前言基本语法路径表达式示例示例 1: 提取简单值示例 2: 提取嵌套值示例 3: 提取数组中的值注意

Java function函数式接口的使用方法与实例

《Javafunction函数式接口的使用方法与实例》:本文主要介绍Javafunction函数式接口的使用方法与实例,函数式接口如一支未完成的诗篇,用Lambda表达式作韵脚,将代码的机械美感... 目录引言-当代码遇见诗性一、函数式接口的生物学解构1.1 函数式接口的基因密码1.2 六大核心接口的形态学

Redis的Zset类型及相关命令详细讲解

《Redis的Zset类型及相关命令详细讲解》:本文主要介绍Redis的Zset类型及相关命令的相关资料,有序集合Zset是一种Redis数据结构,它类似于集合Set,但每个元素都有一个关联的分数... 目录Zset简介ZADDZCARDZCOUNTZRANGEZREVRANGEZRANGEBYSCOREZ

IDEA如何将String类型转json格式

《IDEA如何将String类型转json格式》在Java中,字符串字面量中的转义字符会被自动转换,但通过网络获取的字符串可能不会自动转换,为了解决IDEA无法识别JSON字符串的问题,可以在本地对字... 目录问题描述问题原因解决方案总结问题描述最近做项目需要使用Ai生成json,可生成String类型