C++学习过程中积累到的经验(二)

二.string类函数的使用

1.将string类字符串转化为c风格字符串:ch=str.c_str();
2.用于比较两个string类字符串:str1.compare(str2);
3.查找string的某个元素:find(); find_first_of(); find_last_not_of(); rfind();
4.检测string类字符串是否非空:str.empty();
5.获取string()的长度:strr.length();
6.提取string字符串的字串:str2=str1.sub_str(int pos,int len);//pos为起始位置,len为字串长度
7.string类字符串和c风格字符串相加:str.append(ch);//c风格与string:strcat(ch,str.c_str());
8.string类字符串的替换:str1.replace(int pos,int len,str2);

三.指针使用中的注意要点

1.指针的初始化:“=”右操作数必须是内存中合法取得的数据地址;
指针赋值:“=”左操作数可以是*p(改变的是p指向的地址中存放的数据),也可以是p(改变的是p指向的地址);
2.数组指针与二维数组:在定义二维数组与数组指针时,应该如下赋值:

int p[5][6];
int (*pp)[6];
pp=p;
//或者如下
int (*pp)[6]=p;

3,数组指针与二维数组:

int p[5][6];
int *pp[5];
for(i=0;i<5,i++)
    pp[i]=p[i];

4.避免程序中出现野指针:野指针可能在以下操作中出现:
指针创建时未初始化:

int *a;
int*a=NULL//最好让其指向空地址

在使用free()或者delete()释放动态空间时没有释放指针:

int*a=new int[5];
delete[]a;
//最好有如下操作
a=NULL;

指针创建与操作不在同一作用域内
5.释放动态空间时,要注意delete要指向动态分配空间的首地址

#include "stdafx.h"
#include<iostream>
using namespace std;

int main(){
	int *aa=new int[10];
	int *copy_aa=aa;
	cout<<oct;
	for (int i = 0; i < 10; i++){
		*aa=i;
		cout<<aa<<" "<<*aa<<endl;
		aa++;}
	cout<<endl<<"当前指针指向内存的地址为:"<<aa<<endl;
	aa=copy_aa;//必须将指针指向动态分配的空间的首地址!!!!!!!
	delete[]aa;
	aa=NULL;
	return 0;}

2020.2.5

发布了2 篇原创文章 · 获赞 0 · 访问量 51

猜你喜欢

转载自blog.csdn.net/WOD_MAAYA/article/details/104180686