C++复习中相关要点的记录(一)

1、命名空间

c++引入命名空间是为了解决命名冲突问题;

假设这样一种情况,当一个班上有两个名叫 Zara 的学生时,为了明确区分它们,我们在使用名字之外,不得不使用一些额外的信息,比如他们的家庭住址,或者他们父母的名字等等。
同样的情况也出现在 C++ 应用程序中。例如,您可能会写一个名为 xyz() 的函数,在另一个可用的库中也存在一个相同的函数 xyz()。这样,编译器就无法判断您所使用的是哪一个 xyz() 函数。
因此,引入了命名空间这个概念,专门用于解决上面的问题,它可作为附加信息来区分不同库中相同名称的函数、类、变量等。使用了命名空间即定义了上下文。本质上,命名空间就是定义了一个范围。

(1) 定义命名空间

命名空间的定义使用关键字 namespace,后跟命名空间的名称,如下所示:
namespace namespace_name {
  // 代码声明
}

实例


#include <iostream>
using namespace std;
 
// 第一个命名空间
namespace first_space{
   void func(){
      cout << "Inside first_space" << endl;
   }
}
// 第二个命名空间
namespace second_space{
   void func(){
      cout << "Inside second_space" << endl;
   }
}
int main ()
{
 
   // 调用第一个命名空间中的函数
   first_space::func();
   
   // 调用第二个命名空间中的函数
   second_space::func(); 
 
   return 0;
}

(2)using 指令

可以使用 using namespace 指令,这样在使用命名空间时就可以不用在前面加上命名空间的名称。这个指令会告诉编译器,后续的代码将使用指定的命名空间中的名称。


#include <iostream>
using namespace std;
 
// 第一个命名空间
namespace first_space{
   void func(){
      cout << "Inside first_space" << endl;
   }
}
// 第二个命名空间
namespace second_space{
   void func(){
      cout << "Inside second_space" << endl;
   }
}
using namespace first_space;
int main ()
{
 
   // 调用第一个命名空间中的函数
   func();
   
   return 0;
}

2、变量

(1)常数:

	两种定义方式:
	 #define PI 3.14 	
	 const float PI 3.1415

(2)整数

类型字节数(位数)最小值最大值
int4(32)-21474836482147483648
shot int2(16)-3276832768
unsigned int4(32)04294967295

(3)浮点型:

float:4字节;
double:8字节;
long double:16字节;

(4)字符

  • 包含字母、数字、标点、控制符号等;
  • 每个字符占1字节(8位);
  • 在内存中以整数数值(ASCII码的10进制表示)的方式存储;
  • C++声明字符时用单引号(‘A’)引起来;
  • char:占8位, -128 —127
  • unsigned char: 8位 0-255

3、运算符&表达式

位运算符

(在学习…)

4、数据类型转换问题

(1)自动转换

类型数值范围大的优先作为转换对象
double>float>unsigned long>long> unsigned int> int
也就是long 和int相加会自动转换成long

(2)强制转换

使用于大范围转换小范围
int a;
float b,c;
a=(int)b+c;

5、数组

(1)一维数组

  • 最基本的数组结构。
  • 和变量一样,必须先声明,编译时才给分配连续的内存空间。
  • int A[6]; int A[6]={1,2,3,4,56};
  • 初值数小于数组元素个数,以0填充。
  • 没有指定数组元素个数,编译时按初值个数赋值。

(2)二维数组

  • int A[5][6]; int A[5][6]={0};
  • int A[2][4]={{1,2,3},{4,5,6}}; //用0补
  • int A[ ][3]={{1,2,3},{4,5,6}}; <-----以上四种定义方式合法;
  • int A[5][]6; <-----不合法!!

6、字符串

  • c++加了字符串类string来表示字符串;

  • 字符串必须用’\0’表示一个字符串的结束

  • ‘a’:字符a,长度1; “a”:字符串a, 长度2;

  • 声明:
    1、
    char a[]=“STRING”;
    或:
    char a[7]={‘S’,‘T’,‘R’,‘I’,‘N’,‘G’,’\0’};
    或用指针:
    char* a = “STRING”;

    注:先创建字符串数组,再赋值,会出现错误:
    char s[20];
    s =“123456”; ×
    正确方法是:strcpy(s,“123456”);

  • 用String类
    在头文件中。
    string s1;
    string s2=“String”;
    s2 = a; //可以
    char s3[] = s2; //错误

  • 字符串比较问题
    =:赋值;
    +:拼接;
    ==:判断是否相等;
    <、>:按照ASCII码值比较;

  • String类的成员函数:

函数名称功能
构造函数产生或复制字符串
析构函数销毁字符串
=,assign赋以新值
Swap交换两个字符串的内容
+ =,append( ),push_back()添加字符
insert ()插入字符
erase()删除字符
clear ()移除全部字符
resize ()改变字符数量
replace()替换字符
+串联字符串
==,! =,<,<=,>,>=,compare()比较字符串内容
size(),length()返回字符数量
max_size ()返回字符的最大可能个数
empty ()判断字符串是否为空
capacity ()返回重新分配之前的字符容量
reserve()保留内存以存储一定数量的字符
[],at()存取单一字符
>>,getline() 从 stream 中读取某值
<<将值写入 stream
copy()将内容复制为一个 C - string
c_str()将内容以 C - string 形式返回
data()将内容以字符数组形式返回
substr()返回子字符串
find()搜寻某子字符串或字符
begin( ),end()提供正向迭代器支持
rbegin(),rend()提供逆向迭代器支持
get_allocator()返回配置器
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值