博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(九十七)函数与array对象
阅读量:6264 次
发布时间:2019-06-22

本文共 3001 字,大约阅读时间需要 10 分钟。

首先复习array类对象,他是一个数组类。

 

①首先需要头文件<array>

②声明格式:array<类型名, 成员数量>数组名;

③初始化:array<类型名, 成员数量>数组名={

成员1, 成员2,……};

④需要使用名称空间std(就像cincout那样);

⑤类型名可以为字符串,或者string类等。

 

若要在函数中引入array对象,那么将和结构、string类似。

 

引入array对象:则传递的参数应为:array<类型名成员数量>

直接修改原array对象:在前者的前提下,使用指针或者地址运算符&

 

如代码;

#include
#include
using namespace std;const int m = 4;void show(array
,array
); //显示,输入int类型和字符串类型的array数组void change(array
*); //指针作为参数,使原数组的值+1。array
half(array
*); //将数组地址作为参数,将输入值乘以1/2并返回一个array数组(double类型)array
*zhizhen(array
); //输入array数组,返回一个新数组的指针int main(){ array
player = { 10,15,20,25 }; //创建一个array对象数组 array
shuxing = { "str: ","dex: ","def: ","luck: " }; //创建属性描述数组,array可以创建其他类对象,比如字符串、string类等 show(player,shuxing); //调用函数,显示player cout << endl; cout << "******修改属性ing*****" << endl << endl;; change(&player); //将player的地址作为参数,然后调用change函数,无返回值。 show(player,shuxing); //显示改变之后的player数组 cout << endl << "**********现在将属性减半****************" << endl << endl; array
player_2 = half(&player); //调用half函数,将player减半后的数值赋值给player_2数组 show(player_2, shuxing); //显示player_2数组 array
*another = zhizhen(player_2); //player_2数组作为参数,返回值为指针,赋值给array指针another show(*another, shuxing); //显示another数组 system("pause"); return 0;}void show(array
player,array
shuxing) //array数组作为参数,无返回值{ static int n = 1; //局部函数静态变量n,用于计数属性显示次数。 cout << "这是第 "<
<<" 次显示属性:" << endl; for (int i = 0;i < m;i++) cout << shuxing[i] << player[i] << endl; //循环输出属性 cout << "————————————" << endl << endl; n++;}void change(array
*player) //array指针作为参数,无返回值(直接通过指针操纵数组){ for (int i = 0;i < m;i++) (*player)[i] += 1; //引入的是指针,直接通过指针操纵值每个都加1}array
half(array
*player) //array指针作为参数,返回array数组(一个新的数组){ array
half; //创建一个新数组 for (int i = 0;i < m;i++) half[i]=(*player)[i] / 2; //新数组的值是指针指向数组的值的1/2 return half; //返回数组}array
*zhizhen(array
player) //array数组作为参数,返回指针(一个新的指针){ array
*x = new array
; //new一个array对象指针数组 for (int i = 0;i < m;i++) (*x)[i] = player[i]+20; //指针数组的值,是数组对应位置的值+20 return x; //返回指针}

输出:

这是第 1 次显示属性:str: 10dex: 15def: 20luck: 25————————————******修改属性ing*****这是第 2 次显示属性:str: 11dex: 16def: 21luck: 26————————————**********现在将属性减半****************这是第 3 次显示属性:str: 5.5dex: 8def: 10.5luck: 13————————————这是第 4 次显示属性:str: 25.5dex: 28def: 30.5luck: 33————————————请按任意键继续. . .

解释:

①思路是:

创建一个double数组,一个char[10]数组,前者为属性,后者为文字;

 

输出这个数组(show函数);

 

这个数组的地址作为参数,通过函数来使得这个数组的每个成员的值都+1change函数);输出原array数组指针的值(show函数)

 

创建一个新array数组,调用函数half,使新数组的值,为函数half参数的数组的值的一半;输出新的array数组的值(show函数)

 

创建一个新的array数组指针,调用函数zhizhen,在函数中,创建一个新的指针,这个指针每个成员的值,为作为参数的数组成员的值+20,然后函数返回新指针的地址。于是,将函数返回值的地址,赋给新的array数组指针。输出新的array数组指针的值(show函数)

 

 

②注:蓝色字体函数原型时可以省略

array数组作为参数:

array<类型名,成员数> 变量名

void show(array<double, m>,array<char[10],m>);

 

array数组指针(地址)作为参数:

array<类型名,成员数>* 变量名

void change(array<double, m>*);

 

返回值为array数组:

array<类型名,成员数> 函数名( 传递的参数 )

array<double, m> half(array<double, m>*)

 

返回值为array指针:

array<类型名,成员数>函数名( 传递的参数 )

array<double, m>*zhizhen(array<double, m>)

 

转载地址:http://tbupa.baihongyu.com/

你可能感兴趣的文章
poj 2373 Dividing the Path
查看>>
dplyr 数据操作 常用函数(4)
查看>>
A股实时股票行情,指数行情web API 使用方法
查看>>
大整数算法[04] 位操作
查看>>
C# Parsing 类实现的 PDF 文件分析器
查看>>
汇编学习(1)
查看>>
Google招聘 Lead Software Engineer
查看>>
Bzoj1026 windy数
查看>>
Java07
查看>>
mongodb基础知识_4
查看>>
ROP
查看>>
Windows常用网络命令技巧汇总 [转]
查看>>
【noi 2.6_8787】数的划分(DP){附【转】整数划分的解题方法}
查看>>
Win8 app判断网络连接状态
查看>>
CentOS 6.7下nginx SSL证书部署的方法分享
查看>>
菜鸟学SQLServer--数据文件和日志文件
查看>>
分享我积攒的测试相关的资料收集awesome-test
查看>>
1.2、solidworks入门1(零件建模、装配设计、工程图设计)
查看>>
SpringBoot Docker Mysql安装,Docker安装Mysql
查看>>
td中使用overflow:hidden; 无效解决方案
查看>>