C++学习日记(一)

C++学习日记(一)(指针与字符串、结构、动态内存分配)

一.基本概念

1.指针:用于存储值的地址
指针本质是变量,记录地址的变量。

2.常用int* 声明一个类型为int的指针(每个指针需要一个*)

3.对指针用*之前,要先使其指向一个地址

二.用指针管理运行阶段的内存分配
1.用new申请一个类型的内存空间,并将其地址赋给一个指针。
int* tian=new int;
2.delete可用于释放new所申请的内存空间,但不会删除指针,指针可再指向另一个空间

delete tian;

3.new与数组
用new为一个数据类型申请一个动态数组

int* ps=new int[10];//一般使用后用delete释放内存
delete[]ps;

获取了一个元素个数为10的数组,并将数组第一个元素的地址赋给ps。
可通过ps[0] ps[1]来访问对应数组元素。

ps=ps+1 //**将指针指向ps[1]**

注意
在这里插入图片描述
总结:
1.数组名是数组的第一个元素的地址。(数组名就是指针

2.指针算术
指针可以加上整数,指针+1相等于将指针指向的地址值加上指向的对象占用的总字节数。
可用这种方法计算数组间元素地址的差值。

二.指针与字符串
1.char数组名,char指针以及用引号括起的字符串常量,都被解释为字符串中第一个字符的地址。
(cout<<等c++处理输出字符串地址时,将打印该地址的字符直到‘\0’)。
2.如果char* ps; cout<<ps;,则显示字符串,如下(int*)ps;才可获得地址。
3. 获取字符串的副本时,可先声明一个数组或用new获取一个空间,char* ps=new char[100];
然后再用strcpy(a,b)将副本内容赋值。
a为目标地址,b为原来的地址。

struct inflatable
{
	char name[20];
	float sh;
};
inflatable* ps=new inflatable
cin.getline(ps->name,20);
cin>>(*ps).sh;

两种结构指针的使用方法
一种-> 一种用*相当于结构本身

三.自动存储,静态存储,动态存储
1.自动存储:函数内部声明的变量,存储在栈中,出函数则出栈并释放内存空间。
2.静态,函数外面定义的变量。
3.动态存储,用new和delete管理的内存池,存储在自由存储空间、堆(heap)中。

四.vector与array
1.两者均是数组的替代品,其中vector为动态数组,自动使用new和delete来管理内存
声明方式如下:
vector<int> a(number);
创建一个存储number个int类型变量的数组,number可以是变量。

array为静态存储数组,只是比数组更安全。
声明如下:

array<int,5> a;

必须声明元素的个数
array、vector均可用数组表示法访问,此外array还可直接两者之间直接赋值,而数组只能逐个元素赋值

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值