从c到c++2

发布时间:2024-08-28 13:01

从c到c++2

目录

  1. new和delete
  2. 命名空间
  3. cin和cout
  4. string类型的基本使用

new和delete

c++动态分配内存
1.c++动态分配内存运算符(new)
在c++中用来向系统申请堆内存空间,相当于c语言中的malloc
2.定义:
1)、 int*p=new int; 在堆内存中申请一个int类型大小的内存,把首地址返回给p
2)、int p = new int(10); 在堆内存中申请一个int类型大小的空间,并把这个空间赋值为10,把首地址返回给p
3)、int
p=new int[5]; 在堆内存中申请五个连续的int类型大小的空间,把这个连续空间的首地址返回给p
3.new的特性:
1)、new是运算符
2)、new可以分配2种内存,1种是单个内存,1种是多个连续内存
3)、new只有一种方式可以在分配内存的同时给该内存赋值,分配连续多个内存是无法同时赋值的
4)、如果需要给分配的内存赋值,除上述的一种情况之外,另外二种方式需要额外加上赋值语句,来给内存赋值
拓展:c语言函数memset可以用来给连续内存赋值。
c++动态内存释放
1、C++动态内存释放运算符 delete
在C++中用来向系统释放申请过的堆内存空间,等价于c语言中free
2、定义:
1)、int *p = new int;或 int *p = new int(10); delete p; p = NULL; 释放p所指向的堆内存中申请的空间,把p赋值为空(单个内存空间释放)
2)、int *p = new int[5]; delete []p; p = NULL; 释放p所指向的堆内存中申请的连续空间,把p赋值为NULL (连续多个内存释放)
3、delete的特性
1)、delete是运算符
2)、delete可以释放2种内存,1种是单个内存,1种是多个连续内存 3)、delete释放内存时,指针保存的必须是内存首地址
4)、释放内存后,必须进行赋空操作

命名空间

1、什么是命名空间
命名空间是用来组织和重用代码的编译单元。
在编写代码时写的程序不可能所有的标识符都没有重名现象,在多人协同开发时更加不可控,尤其对于库来说问题更加严重。为了解决重名现象,通过命名空间来避免冲突。
2、命名空间的定义
namespace 命名空间表示符
{
命名空间成员;
}
3、命名空间的注意事项
1)、命名空间标识符必须满足标识符的命名规则和命名规范,习惯名字唯一,通常以开发团队的名字(项目名)来命名
2)、命名空间可以在全局,也可以在局部(命名空间接受嵌套定义),但不能在函数内和类中定义
3)、命名空间的花括号是作用域
4)、注意命名污染,尽量规避同名的出现,如果两个命名空间名同名,那么就会合并两个命名空间
4、命名空间的访问
1)、using 声明: using 命名空间名称::空间成员名称; 放开一个成员的可见性,这一个成员可以在空间外可见(建议大家使用这种,比较容易避免出现命名污染)
2)、using 指示: using namespace 命名空间名; 放开该命名空间的所有权限(所有成员都在空间外可见),适用于该空间的 大部分成员都需要经常被使用
3)、命名空间名称::空间成员名称,直接访问空间下的某一个成员
5、命名空间取别名
namespace 别名=命名空间名 当命名空间标识符过长或不太方便记忆,可通过取别名的方式来表示该命名空间,别名的操作等价于原命名空间

cin和cout

cin与cout是c++中的输入和输出(相当于c语言中的scanf与printf)
1)、使用时需要包含头文件#include < iostream >和std命名空间

#include
using namespace std;
int main()
{
  int num;
  int row;
  int rol;
  cin>>num;//从键盘输入一个数值
  cin>>row>>rol;//输入二次,把输入的数值放入row和rol中
  cout<<num;//输出num
  cout<<endl;//换行
  return 0;
}

string类型的基本使用

1、string概念:c++中的字符串(相当于c语言中字符数组)
2、使用时需要调用头文件#include< string >和std命名空间

#include
#include
using namespace std;
void test()
{
  string str1=\"addfggg\";//初始化一个字符串
  string str2;
  str2=str1;//把str1赋值给str2
  int len=str1.length();//求str1的长度
  str1.clear();//清空字符串str1
  if(str1.empty()==nullptr)//判断字符串是否为空
  {
     cout<<\"字符串str1为空\"<<endl;
  }
  if(str1==str2)//判断字符串是否相同
  {
     cout<<\"str1与str2相同\"<<endl;
  }
  //得到字符串中的某一个位置的字符
  char a=str2[3];
  char a1=str2.at(3);//这里的两个3都是下标,注意不能够越界
  cout<<a<<\" \"<<a1<<endl;
}
int main()
{
   test();
   return 0;
}

ItVuer - 免责声明 - 关于我们 - 联系我们

本网站信息来源于互联网,如有侵权请联系:561261067@qq.com

桂ICP备16001015号