首页 > 其他分享 >cpp primer plus 第七章

cpp primer plus 第七章

时间:2024-09-14 16:55:20浏览次数:14  
标签:arr 函数 int double 7.3 plus 数组 cpp primer

7.1 函数基本知识

7.1.1 定义函数

函数分为两类:有返回值与无返回值的函数。

对于有返回值的函数,必须使用返回语句,将值返回给调用函数。

若函数包含多条返回语句,则函数在执行第一条返回语句后结束。

7.1.2 函数原型

声明函数如果在main函数后方,则在前面声明函数(复制函数定义中的函数头并加分号),原型参数列表可包括变量名也可不包括。

7.2

7.2.1 函数参数

函数参数列表中的参数是形参,在函数中修改形参不会影响调用程序中的数据。

7.3 函数与数组

int sum_arr(int arr[],int n);

上述函数中,arr实际上并不是个数组,而是指针,但是在编写函数的其余部分时,可以将arr看做数组。

7.3.1 函数如何用指针来处理数组

int sum_arr(int arr[],int n);
int sum_arr(int* arr,int n);

 sum_arr的类型必须是int,所以数组类型必须是int指针,即int *。

int * arr 与 int arr[] 运用于函数头或者函数原型中的时候含义相同,在其他上下文中不能这么用。

arr[i] == *(arr + i);
&arr[i] == arr + i;

将指针+1实际上是加上一个与指针指向类型相同的类型的长度。对于遍历数组而言,使用指针加法和数组下标是等效的。

7.3.2 将数组作为参数意味着什么

传递常规变量的时候,函数将使用该变量的拷贝;但传递数组时,函数将使用原来的数组。

将数组地址作为参数可以节省复制整个数组所需的时间和内存。如果数组很大拷贝的系统开销会很大。

7.3.3 更多数组函数示例

为了防止函数无意修改数组中的数据,可在声明形参时使用const

void show_array(const double ar[],int n);

7.3.4 使用数组区间的函数

int cookies[ArSize] = {1,2,3,4,5,6};
int sum = sum_arr(cookies, cookies+ArSize);// 第一个元素与最后一个元素后面的一个位置

7.3.5 const 与 指针

int gorp = 16;
int chips = 12;
const int * p = &gorp; //静止修改p指向的值,允许使p指向另一个变量

int gorp = 16;
int chips = 12;
int const * p = &gorp; //允许修改p指向的值,静止使p指向另一个变量

7.10 函数指针

double pam(int);
double (*pf)(int);
pf = pam;//返回值类型应该相同
double x = pam(4);
double y = (*pf)(5);
//C++允许像函数名一样使用pf
double y = pf(5);

标签:arr,函数,int,double,7.3,plus,数组,cpp,primer
From: https://blog.csdn.net/weixin_57884464/article/details/142167261

相关文章

  • SpringBoot:Web开发(基于SpringBoot使用MyBatis-Plus+JSP开发)
    目录前期准备构建项目(IDEA2023.1.2,JDK21,SpringBoot3.3.3)添加启动器Model准备这里我们利用MybatisX插件生成我们所需要的实体类、数据访问层以及服务层注意选择MyBatis-Plus3以及Lombok然后再在service接口中定义我们所需要的方法以及实现类(利用MyBatis-Plus省去我们......
  • 尤雨溪推荐的拖拽插件,支持Vue2/Vue3 VueDraggablePlus
    大家好,我是「前端实验室」爱分享的了不起~今天在网上看到尤雨溪推荐的这款拖拽组件,试了一下非常不错,这里推荐给大家。说到拖拽工具库,非大名鼎鼎的的Sortablejs莫属。它是前端领域比较知名的,且功能强大的工具。但我们直接使用Sortablejs的情况很少,一般都是使用基于它的......
  • 标准的vue3 elementplus格式,不用export default
    <template><div><!--查询表单--><el-form:inline="true":model="filters"class="demo-form-inline"><el-form-itemlabel="产品料号"><el-inputv-model="filters.......
  • CPP在内网穿透技术的思考
    概述内网穿透是一种技术,用于在私有局域网(LAN)中的设备与外部网络(如互联网)之间建立通信通道,使得外部设备可以访问内网中的服务。由于内网设备通常位于防火墙或NAT(网络地址转换)设备之后,外部网络无法直接访问它们。因此,内网穿透技术旨在解决这一问题。本文将讨论如何使用C++实现内......
  • Mybatis与Mybatis-plus的比较
    MyBatis和MyBatis-Plus都是流行的JavaORM框架,它们在处理数据库操作时各有优势和特点。以下是对两者的比较:MyBatisMyBatis是一个成熟的ORM框架,它提供了映射SQL语句到Java对象的能力。以下是MyBatis的一些优缺点:优点:灵活性高:MyBatis允许开发者编写原生SQL,提......
  • MyBatis-Plus动态表名
    MyBatis-Plus动态表名一、早期方案1.1MyBatis-Plus版本1、添加MyBatis-Plus依赖<dependency>   <groupId>com.baomidou</groupId>   <artifactId>mybatis-plus-boot-starter</artifactId>   <version>3.5.1</version></dependency>......
  • 【Stable Diffusion】最新换脸模型:IP-Adapter Face ID Plus V2 WebUI 效果超赞!(附模型
    ControlNet是StableDiffusionWebUI中功能最强大的插件。基于ControlNet的各种控制类型让StableDiffusion成为AI绘图工具中最可控的一种。IPAdapter就是其中的一种非常有用的控制类型。它不仅能够实现像Midjourney一样的“垫图”功能,还能用来给肖像人物换脸......
  • 锋哥写一套前后端分离Python权限系统 基于Django5+DRF+Vue3.2+Element Plus+Jwt 视频
    大家好,我是java1234_小锋老师,最近写了一套【前后端分离Python权限系统基于Django5+DRF+Vue3.2+ElementPlus+Jwt】视频教程,持续更新中,计划月底更新完,感谢支持。视频在线地址:打造前后端分离Python权限系统基于Django5+DRF+Vue3.2+ElementPlus+Jwt视频教程(火爆连载更新中......
  • c++primer第四章复合类型学习笔记
    数组数组创建声明:存储元素类型数组名数组的元素个数#include<iostream>usingnamespacestd;intmain(){intyams[3];yams[0]=7;yams[1]=8;yams[2]=6;intyamcosts[3]={20,30,5};cout<<"Totalyams=";cout<<......
  • c++primer第五章循环和关系表达式学习笔记
    for循环简单for循环#include<iostream>usingnamespacestd;intmain(){//5.1inti;for(i=0;i<5;i++)cout<<"C++knowsloops.\n";cout<<"C++knowswhentostop.\n";return0;}for循环组成部分#......