C++ 函数学习笔记

函数

创建自己的函数必须自行处理这3方面 - 定义、提供原型和调用。

库函数是已经定义和编译好的函数,同时可以使用标准头文件提供其原型,因此只需要正确的调用这种函数即可。

C++对于返回值的类型有一定的限制:不能是数组,但可以是其他任何类型 —— 整数、浮点数、指针,甚至可以是结构和对象!(虽不能直接返回数组,但可以将数组作为结构或对象组成部分返回。)

函数原型不要求提供变量名,有类型列表就足够了。C++中函数原型是必不可少的。

函数和数组

C++将数组名解释为其第一个元素的地址:

cookies == & cookies[0]

cookies[i] == *(cookies + i)

该规则有一些例外:

1、数组声明使用数组名来标记存储位置
2、对数组使用sizeof得到整个数组的长度
3、将地址符&用户数组名时,将返回整个数组的地址,

数组的函数原型

int sum_arr(int arr[], int n)

int sum_arr(int *arr, int n)

传递常规变量时,函数将使用该变量的拷贝;但传递数组时,函数将使用原来的数组。
为了防止函数无意中修改数组的内容,可在声明形参时使用关键字const

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

指针和const

1、让指针指向一个常量对象,可以防止指针来修改指向的值。

int age = 39;

const int * pt = &age;

pt的声明并不意味着它指向的值实际上就是一个常量,而只是意味着对pt而言,这个值是常量。例如,pt指向age,而age不是const。可以直接通过age变量来修改age的值,但不能使用pt指针来修改它。
const只能防止修改*pt指向的值,而不能防止修改pt的值。也就是说可以将一个新地址赋值给pt。

可以将常规变量赋值给指向const的指针,因此还有两种可能:将const变量的地址赋值给指向const的指针、将const的地址赋值给常规指针。

const float g_earth = 9.80;

const float *pe = &g_earth; //valid

 

const float g_moon = 1.63;

float *pm = &g_moon; //invalid

2、将指针本身声明为常量,这样可以防止改变指针指向的位置。

int sloth = 3;

const int * ps = &sloth; // a pointer to const int

int * const finger = &sloth; //a const pointer to int

关键字const的位置不同,使得finger只能指向sloth,但允许使用finger来修改sloth的值。中间的声明不允许使用ps来修改sloth的值,但允许将ps指向另一个位置。简而言之,finger和*ps都是const,而*finger和ps不是。

3、指针和值均为常量

double trouble = 2.0E30;

const double * const stick = &trouble;

此时,stick只能指向trouble,并且不能用stick来修改trouble的值。

函数和C-风格字符串

C-风格字符串由一系列字符组成,以空字符结尾。数组相关知识也适用于C-风格字符串。例如,将字符串作为参数时意味着传递的是地址,也可以使用const来禁止对字符串进行修改。
将字符串作为参数传递给函数,有3中表示字符串的方式:

char数组;

用引号括起的字符串常量(也成为字符串字面值);
被设置为字符串的地址的char指针

char ghost[15] = "galloping";

char * str = "galumphing";

将字符串作为参数来传递,实际上传递的是字符串第一个字符的地址。意味着函数原型应声明为 char *类型。
C-风格字符串与常规char数组之间的一个重要区别是,字符串有内置的结束字符,这意味着不必将字符串长度作为参数传递给函数。

函数和string对象

虽然C-风格字符串和string对象的用途几乎相同,但与数组相比,string对象与结构更相似。例如,可以将一个结构赋给另一个结构,也可以将一个对象赋值给另一个对象。可以将结构作为完整的实体传递给函数,也可以将对象作为完整的实体进行传递。如果需要多个字符串,可以声明一个string对象数组,而不是二维char数组。

函数和结构体

与数组名就是数组第一个元素的地址不同的是,结构名只是结构的名称,要获取结构的地址,必须使用地址运算符&。

传递结构的地址

调用函数时,将结构的地址(&st)而不是结构本身(st)传给给它;
将形参声明为指向st的指针,即st *类型。如果不允许修改结构,可以使用const修饰符;
由于形参是指针而不是结构,因此应用间接成员运算符(->),而不是成员运算符(.)。
函数指针

与数据项相似,函数也有地址。函数的地址是存储其机器语言代码的内存的开始地址。可以编写将另一个函数的地址作为参数的函数,这样子第一个函数将能够找到第二个函数,并运行它。函数名即为函数的地址

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索指针
, 数组
, 字符串
, 结构
, 函数
const
,以便于您获取更多的相关知识。

时间: 2024-08-02 19:02:26

C++ 函数学习笔记的相关文章

python函数学习笔记

#!/usr/bin/env python #个人学习笔记,无其他用途 def add(x=9,y=10): if x>y: a=x+y print "x+y" return a if x<y: a=y-x print "y-x" return a if x==y: a=x*y print "x*y" return a print add(2,3) print add(5,4) print add(6,6) 将一个数组的值传递给函数

整理Javascript函数学习笔记_javascript技巧

1.什么是函数 如果需要多次使用同一段代码,可以把它们封装成一个函数.函数(function)就是一组允许在你的代码里随时调用的语句.每个函数实际上是一个短小的脚本. 如:要完成多组数和的功能. var sum; sum = 3+2; alear(sum); sum = 7+8; alear(sum); ......//不停的重复两行代码 如果要实现8组数的和,就需要16行代码,实现的越多,代码行也就越多.所以我们可以把完成特定功能的代码块放到一个函数里,直接调用这个函数,就省去重复输入大量代码

PHP常用正则表达式函数学习笔记

正则语法规则     我们先介绍三个东西,然后可以进行简单的例子了. 一.定界符    "/" 左斜线 php采用左斜线作为定界符,规定规则的边界,成对出现,两个定界符之间的内容就是需要被匹配的规则 二.元字符---出现模式类 匹配方式,可以用来规定其前导字符(即位于元字符前面的字符)在目标对象中的出现模式. 比如出现一次,出现多于一次,出现多次,没有出现.等等. 常用的有:     +     1次或多次     *     0次或1次或多次     ?    0次或1次   {2,

php 数组操作函数学习笔记

对于Web编程来说,最重要的就是存取和读写数据了.存储方式可能有很多种,可以是字符串.数组.文件的形式等.数组,可以说是PHP的数据应用中较重要的一种方式.PHP的数组函数众多,下面是我学习的小结,借此记之,便于以后鉴之.. 数组定义 数组的定义使用 array()方式定义,可以定义空数组:  代码如下 复制代码 <?php $number = array(1,3,5,7,9); //定义空数组 $result = array(); $color =array("red",&qu

excel中LOOKUP函数学习笔记

LOOKUP(lookup_value.lookup_vector.result_vector) •Lookup_value 是 LOOKUP 在第一个矢量中搜索到的值.Lookup_value 可以是数字.文本.逻辑值,也可以是代表某个值的名称或引用. •Lookup_vector 是一个仅包含一行或一列的区域.lookup_vector 中的值可以是文本.数字或逻辑值. 重要说明: lookup_vector 中的值必须按升序顺序排列.例如,-2.-1.0.1.2 或 A-Z 或 FALSE

PHP 日期函数 学习笔记介绍

举一个简单的date例子   我将使用echo命令把内容输出到我们的客户端(浏览器).我将使用下面的代码做为基础代码.    代码如下 复制代码 <!DOCTYPE html> <html lang="en"> <head>     <meta charset="utf-8" />     <title>Getting started with dates in php5</title> <

php入门教程之字符串函数学习笔记(1/3)

PHP语言是一个功能强大的嵌入式HTML脚本语言,它的易用性让许多程序员选择使用.PHP判断字符串的包含,可以使用PHP的内置函数strstr,strpos,stristr直接进行判断.也可以通过explode函数的作用写一个判断函数. 探讨如何实现PHP判断字符串是否为IP 深入探讨PHP自动获取关键词的具体方法 PHP字符串函数的分类总结 分享PHP函数require()的具体使用技巧 PHP重定向网页的具体实现方法介绍 下面介绍PHP判断字符串的包含的具体使用方法: 1. strstr:

Python中的自定义函数学习笔记_python

定义一个什么都不做的函数 复制代码 代码如下: >>> def a(): ... pass ... >>> def printHello(): ... print("hello") ... >>> printHello() hello >>> callable(printHello) True 顾名思义,callable函数用于判断函数是否可以调用: 有书上说,callable在Python3.0中已经不再使用,而

php自定义函数学习笔记实现99乘法表

使用自定义函数方式来实现99乘法表,函数是一种可以在任何被需要的时候执行的代码块. 创建 PHP 函数: 所有的函数都使用关键词 "function()" 来开始 命名函数 – 函数的名称应该提示出它的功能.函数名称以字母或下划线开头. 添加 "{" – 开口的花括号之后的部分是函数的代码. 插入函数代码 添加一个 "}" – 函数通过关闭花括号来结束. 例子 一个简单的函数,在其被调用时能输出我的名称的:  代码如下 复制代码 <html

JavaScript中封装class函数学习笔记

封装: 把相同功能的代码丢到一个函数中,重复调用.封装css函数 : 1,可以获取元素的样式 2,可以修改元素的样式.封装的过程是循环渐进的,一步一步的来.本节第一.二.三.五.六步公用CSS: #div1 { width: 100px; height: 150px; background: red;} 本节第一.二.三.五.六步公用HTML: <div id="div1" ></div> 封装第一步:JS:function a(idName){