C++二级复习2
1、C++的字符串类和字符串变量
头文件必须是 #include <string> 没有.h
string str1="arigado";
string str2;
str1[2]='d'; 修改某个字符
输入输出
cin>>str2;
cout<<str2;
运算和赋值
可以直接使用=,+,==,>,<,!=,>=等运算符
字符串数组不展开介绍了
2、指针(简单复习)
定义时,需要赋初值(地址)
类型名 * 指针名 = 地址;
类型表示指针指向的数据类型,*取值,&取址
在函数中,修改变量的值,需要传入函数的指针;修改指针的值,则需要传入指针的指针(二级指针)(如:线性表结点的插入删除等)
C++系统中将形参数组名一律作为指针变量处理。好!
字符数组的指针和普通数组的指针差不多。
抄了书上一个例子
char str1[]="kagura and mea",str2[20],*p1,*p2;
p1=str1,p2=str2;
for(;p1!='\0';p1++,p2++)
*p2=*p1;
*p2='\0'; 这步需小心,加上结束标志
p1=str1,p2=str2; 改变指向
cout<<p1<<endl;
cout<<p2<<endl;
一个简单的辨析
定义时:
(返回)指针函数:函数类型 * 指针名 (函数形参);
指向函数的指针:函数类型 (*指针名)(函数形参);
二维指针(一种形式)3
int **p;
下面的有点用的少(自己)
const指针
只能通过指针改变变量的值(指向常量的指针变量)
const 类型名 * 指针变量名;
const 类型名 变量名; 常量始终不变
类型名 * const 指针变量名;(常指针)指针值(指向)不变,指向的值可变
const 类型名 * const 指针变量名; 指向常量的常指针 (只能指针修改指向变量)
void指针类型,指向空类型 或 不确定类型。
例子,malloc函数新开辟的空间的,返回的指针类型。需要类型转换。
指针变量的空值
int * p=NULL;
3、引用
数据的别名,类似于指针,使用很方便
int a;
int &b=a; 建立 a 的引用 b
注意:
引用需要初始化,声明后不能再更改
无引用的引用,无引用的指针,可以取地址
引用做函数参数,可以修改变量的值(起到类似指针的作用)
以上编辑于2019-03-25
以下编辑于2019-03-26
4、结构体,注意下声明和数据的引用
一般定义格式:
struct 结构体名
{
成员表
};
; 前不定义,可以让不同函数,文件使用此结构体;
如果只在本文件中使用,可以在 ; 前加上声明的变量
初始化可以在定义时指定
结构体与指针,引用数据
stu 是一个结构体student变量,有数据成员 num
struct student *p=&stu;
stu.num;
p->num;
(*p).num;
三者等效
5、动态分配和撤销空间
new 类型;
delete 指针变量;
delete [] 指针变量; 对数组
6、枚举类型,了解即可
enum 枚举类型名 {枚举常量表} 一般值为0,1,2...
变量的值只能是常量表中的值
enum weekday {sun=7,sum=1,tue,wed};
实际上,tue=2,wed=3
7、typedef 声明新类型名,貌似有点重要
声明新类型名,一般使用大写作为区分
typedef int INT;
INT a=1;
typedef long long int LL;
LL a=10;
声明结构体新类型名
typedef struct
{
int num;
}DATE;
数组新类型名,n为包含100整型元素的数组
typedef int NUM[100];
NUM n;
普通指针
tpyedef char * STRIG;
STRIG p,s[10];
指向函数的指针
typedef int(* POINTER)(); 声明PINTER为指向函数的指针类型,函数返回整型值
POINTER p1,p2;
8、面对对象,抽象,封装,继承,多态