C++ 回顾 递归 符合数据类型 指针 引用

第一讲:

递归:

递归定义:使问题向边界条件转化的规则。递归定义必须能使问题越来越简单。

  n!=n*(n-1)!

递归终止条件:也就是所描述问题的最简单情况,它本身不再使用递归的定义。

  1!=1

 

1)分析问题、寻找递归:找出大规模问题与小规模问题的关系,这样通过递归使问题的规模逐渐变小。

2)设置边界、控制递归:找出停止条件

3)设计函数、确定参数:设计函数体中的操作及相关参数。

第二讲:复合数据类型

 string的简单使用:

#include <iostream>

#include <string>

using namespace std;

int main(){

string s1, s2;    //创建两个空字符串对象

string s3 = "Hello, World!";  //创建s3初始化

string s4("I am ");

s2 = "Today";    //赋值

s1 = s3 + " " + s4;    //字符串连接

s1 += " 5 ";    //末尾追加

cout << s1 + s2 + "!" <<endl;  //输出字符串内容

 

n size() 函数返回 string 对象的长度,即对象中字符的个数
n 返回的长度是 string::size_type 类型

 

n empty() 函数判断 string 对象是否为空,返回一个布尔值
n stringObj.empty ()

 

n getline() 函数
n 两个参数:输入流对象和存放读入字符串的 string 对象
n 从指定输入流中读取内容,遇到换行符为止;将所读内容存入指定的 string 对象中,流中的换行符被读取并丢弃
n 返回参数输入流对象

 

定义结构体变量格式如下:

struct 结构体类型名 变量名列表;

也可以把结构体类型声明和变量定义合在一起,格式如下:

struct 类型名{

    数据类型1   成员名1;

    数据类型2   成员名2;

    …

} 变量名;

指针和引用:

n 内存地址
n 程序运行时,代码和需要的数据都被存储在内存中
n 内存是有序的字节序列,每个字节都有唯一的地址,使用该地址可以确定字节的位置,用以存储和获取数据
n 直接访问和间接访问
n 通过变量的名字直接访问为程序中定义的变量分配的内存单元,存取变量的值
n 使用变量的内存地址找到存放数据的单元,间接访问其中的内容

 

n 指针的特点
n 指针持有一个对象的地址,称为指针“指向”该对象
n 通过指针可以间接操纵它指向的对象
n 定义指针变量的语法
n 每个指针都有相关的类型,要在定义指针时指出

类型 *指针变量;

 

取址符:

int ival = 120;

int  *pi = &ival; 

  // pi存放int变量ival的地址

  // 或者说pi指向ival

char ch = 'a', *pc = &ch;

  // pc指向字符型变量ch

 

n void* 指针
n 可以持有任何类型的地址值,即通用指针
n 相关的值是个地址,但是该地址保存的对象类型不知道
n 不能操纵 void 指针指向的对象,只能传送该地址值或者和其他地址值进行比较
n 不允许 void 指针到其他类型指针的直接赋值

 

n new 表达式的三种形式
n 分配单个对象: new 类型 或者 new 类型 ( 初始值 )
n 分配多个连续存储的对象: new 类型 [ 数组大小 ]
n 定位 new ,在指定位置分配空间: new ( 指针 ) 类型 ;

 

n new 运算符分配的空间用 delete 运算符释放
n 释放 new 分配的单个对象的 delete 形式

delete 指针;

n 释放 new 分配的数组的 delete 形式

delete[] 指针;

n 引用一旦初始化,就不能再指向其他的对象,对引用的所有操作都会被应用在它所指向的对象上
n 引用的初始化和赋值不同
n 初始化时引用被 “绑定到” 一个对象;
n 赋值时,引用被作为所绑定对象的别名
 
 
 
n 库函数 begin() end()
n 让指针在数组上的使用更简单更安全
n 在头文件 <iterator> 中定义
n 用法
n begin( 数组名 )
n 返回指向数组第一个元素的指针
n end( 数组名 )
n 返回指向数组最后一个元素的下一个位置的指针
 
 
 
 
 
 
 
 
 
 
 
 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值