CPP不熟悉知识点笔记
19. 指针与函数
19.1 指针作为函数的参数
指针是函数参数传递的重要工具。
通过指针作为函数参数的方法,既可以返回多个运算结果,又可以避免使用全局变量!
(1).作为形参
使用一个函数求a,b的平方和、自然对数和、几何平均数、和的平方根:
一个量通过return返回,其他三个值通过指针返回!
19.2 数组作为函数的参数
传递数组的地址,数组的长度
求数组n个元素的平均值
因此,有四种情况:
1.形参——数组名、实参——数组名;2.形参——指针变量、实参——数组名;
3.形参——指针变量、实参——指针(提前放好数组名);4.形参——数组名、实参——指针。
自定义字符串复制函数:
18. 指针与数组
数组名==数组第0个元素的地址==整个数组的地址
因此,数组名是一个地址常量!
p=a; <==> p=&a[0];
那么访问数组元素a[i],下列写法一致:
a[i] <==> p[i] <==> <==>
因此,遍历数组中的元素,有多种写法:
1.下标法;2.通过地址间接访问数组元素;3.通过指向数组的指针变量间接访问元素;
18.2 指针与字符串(字符数组)
char *p="C Language"; %计算机自动用一个未命名的字符数组来存放“C Language”;且p指向这个字符数组。
使用指针求字符串实际长度(不包含结束标志):
17. 指针
一般函数只能用return返回一个值;利用数组可以返回相同类型的多个值;利用指针可以实现返回不同类型的多个值。
指针是服务于函数的!!尤其是函数之间。
- 拓展了函数可以做的事情。一个函数可以访问另一个函数的内部变量。
int a,b,*p1=&a,*p2; %则,&*p1 = &a =p1; *&a = *p1 = a;
指针类型==对应计算机的字节地址编码;
对象:占据一定的存储空间,有确定的存储位置!编译器将程序中的对象名转换成机器指令能识别的地址,通过地址来存取对象。
无效指针:
1.NULL;2.未初始化;3.迷途指针
指针的运算必须作用在连续的存储空间上才有意义。(连续空间是指,类似于数组所占地的存储空间)
- 用const修饰(限定)的指针
有一件事情不让做了: const int *p; p=&a; 可以读,但是不可以改。
在函数形参中有应用 - const指针
不能做的一件事情是:改变这个指针的指向,起初指向哪个地址,之后依然指向那个地址。 - 指向const对象的const指针
之前提到的两件事情都不能做了。
16. 数组的应用
16.1 排序问题
-
冒泡排序法(bubble sort)
- 选择排序法(selection)
记下来最小的数的下标。
- 选择排序法(selection)
16.2 查找
顺序查找法
思想:循环逐个比较;一般用于无序序列二分查找法
思想:分成大致相同的两部分;一般用于有序序列
15. 字符串处理
15.1 字符数组
C++标准库 兼容了C语言的字符串处理函数,头文件为 string.h
数组的长度 为字符的长度 + 1;
"a"; % 双引号内 是字符串,字符串必须用 数组来存放。
'a'; % 单引号内 是字符
空字符 \0 为 字符串结束标志。
15.3 字符串类 string
完全可以替代C语言的字符数组,且功能更强大。动态长度。
#include <string>;
string str1, str2="Java",str3("C++"); %str3为对象直接初始化;str2为C风格字符串转换为字符串对象
cin >> str1; %输入
cout << str2; %输出
str1 = str2+str3; %连接
str1 == "ABC"; %比较
str.size(); %成员函数
string Xing[5]={"Jiang","Cao","Xu","Zhao","Lu"} %字符串对象数组
14. 数组与函数
14.1 数组作为函数的参数
数组的元数作为函数的参数,与一般变量无区别,属于值传递;
数组名作为函数的参数,传递的是数组的首地址,就是同一个数组。
14.2 数组参数的传递机制
形参数组就是是参数组。(且形参的长度并非必须)
多维数组仅第一维可以省略,且其他维必须和实参相同。
寻找二维数组的最大值,和最大值对应的下标
计算数组所有元素的平均值
13.2 一维数组的引用
int A[5]; %定义的时候方括号里写的是数组的长度;必须是常量表达式
A[2]; %引用的时候方括号里写的是下标。可以是变量
13.3 多维数组的定义
本质上,C++的多维数组都是一维数组,这是由内存形式的线性排列决定的。
且按行存放。
二维数组的循环遍历:
C++程序设计-西北工业大学-魏英、姜学锋、刘君瑞 视频
上一篇: 腾讯精选练习(40/50) :存在重复元素(LeedCode 217)
下一篇: 金蝶容器运维指南
推荐阅读
-
前端笔记知识点整合之JavaScript(七)深入函数&DOM那点事
-
前端笔记知识点整合之HTML5&CSS3(上)新特性&音频视频&本地存储
-
前端笔记知识点整合之JavaScript(十)深入JavaScript节点&DOM&事件
-
oracle复习笔记之PL/SQL程序所要了解的知识点
-
前端笔记知识点整合之jQuery(一)加载函数的区别&对象&操作HTML/CSS&动画&选择器
-
Python 入门必学经典知识点笔记【肯定有你不知道的】
-
荐 【流畅的python】笔记(C14可迭代的对象、迭代器和生成器)自测知识点和书籍补充
-
前端笔记知识点整合之JavaScript(四)
-
前端笔记知识点整合之JavaScript(十二)缓冲公式&检测设备&Data日期
-
前端笔记知识点整合之JavaScript面向对象(一)Object&函数上下文&构造函数&原型链