C++笔记(14)——函数与结构、string对象和array对象

就像前面可以将一个结构赋值给另一个结构一样,结构也可以作为参数直接传递,且函数使用结构的副本。当然,函数也可以返回结构。与数组名表示第一个元素的地址不同,结构名只是名称,要获得结构的地址,必须使用地址运算符&。

因为使用的式结构的副本,所以在函数处理结构时,需要复制结构,因此需要增加内存,所以有些程序员倾向于传递结构的地址,然后使用指针来访问结构的内容。

C++中第三种方式是使用引用传递,见后续章节。

1、参数为结构名的形式

struct rect

{

double x;

double y;

};

struct polar

{

double distance;

double angle;

};

polar rect2polar( rect xypos);//即传入一个rect类型的结构,返回一个polar类型的结构

在rect2polar函数中,使用xypos.x和xypos.y形式进行处理。

2、参数为指针的形式

polar * rect2polar( rect * xypos);

或void rect2polar( rect *xypos, polar *pda);

在调用函数时,对结构实体名需要使用&去地址。

3、string对象

和C风格字符串不同,可以将string对象作为完整的实体进行传递。需要传递多个string对象时,使用string类型数组。函数处理的同样是副本。当然也可以传递对象的指针,此时处理的是原始数据而非副本。

形式:void display(string sa[], int n);//n为字符串数

4、array对象

头文件#include <array>,命名空间std。作为类对象,同样可以像结构一样按值传递。当然也可以传递对象地址或使用引用。

std::array<double, 4> express;

void show(std::array<double,4> da);

voild fill(std::<double,4> * pa);

show(express);//按值传递

fill(&express);//传递地址

如果传递指针,在函数处理中,使用(*pa)[i]对其中的四个元素进行处理。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值