1.C++基础(C、C++)

1.命名空间

所谓namespace,是指标识符的各种可见范围。C++标准程序库中的所有标识符都被定

义于一个名为std的namespace中。

命名空间std封装的是标准程序库的名称,标准程序库为了和以前的头文件区别,一般不加".h"。

标准C++引入了关键字namespace(命名空间/名字空间/名称空间/名域),可以更好地控制标识符的作用域。

 2.总结

1)  当使用<iostream>的时候,该头文件没有定义全局命名空间,必须使用namespace std;这

样才能正确使用cout。若不引入using namespace std ,需要这样做。std::cout。

2)  c++标准为了和C区别开,也为了正确使用命名空间,规定头文件不使用后缀.h。

3)  C++命名空间的定义:  namespace name { … }

4)  using namespace NameSpaceA;
5)  namespce定义可嵌套

3.C++三⽬运算符功能增强

1)C语言返回变量的值 C++语言是返回变量本身C语言中的三目运算符返回的是变量值,不

能作为左值使用 C++中的三目运算符可直接返回变量本身,因此可以出现在程序的任何地方 。

2)注意:三目运算符可能返回的值中如果有一个是常量值,则不能作为左值
使用
(a < b ? 1 : b )= 30;

4.新增bool类型关键字

C++在C语⾔的基本类型系统之上增加了bool;

C++中的bool可取的值只有true和false理论上bool只占⽤⼀个字节,

如果多个bool变量定义在⼀起,可能会各占⼀个bit,这取决于编译器的实现

true代表真值,编译器内部⽤1来表⽰;

false代表⾮真值,编译器内部⽤0来表⽰。

5. const增强

#include    <iostream>
int    main(void)    
{    
//const    定义常量--->    const    意味只读
const    int    a;    
int    const    b;    
//第⼀个第⼆个意思⼀样    代表⼀个常整形数
const    int    *c;    
//第三个    c是⼀个指向常整形数的指针(所指向的内存数据不能被修改,但是本⾝可以修改)
int    *    const    d;    
//第四个    d    常指针(指针变量不能被修改,但是它所指向内存空间可以被修改)
const    int    *    const    e    ;    
//第五个    e⼀个指向常整形的常指针(指针和它所指向的内存空间,均不能被修改)
return    0;    
}

C++中的const修饰的,是一个真正的常量,而不是C中变量(只读)。在const修饰的常量编译期间,就已经确定下来了

(1).C语言中的const变量
 C语言中const变量是只读变量,有自己的存储空间
(2).C++中的const常量
可能分配存储空间,也可能不分配存储空间
当const常量为全局,并且需要在其它文件中使用,会分配存储空间
当使用&操作符,取const常量的地址时,会分配存储空间
当const int &a = 10; const修饰引用时,也会分配存储空间

(3).修改const修饰的常量值(在C++中)

在C语言中,const变量只不过是修饰该变量名,它并不能使内存变为只读。也就是说,

我们不能通过变量名再去操作这块内存。但是可以通过其它方法,如指针,通过指针

是可以修改被const修饰的那块内存的。

void test()
{
  const int a = 10;  //修饰一个变量只读
  char *p = NULL;
  *p = &a;  //想要修改一个常量的值,编译器先开辟一个临时变量空间
  *p = 20;  //修改时,改变的是临时变量的值,并不是const int a的值

  cout<<"a = %d"<<a<<endl;
  cout<<"*p = %d"<<*p<<endl;
}

6.枚举

c 语言中枚举本质就是整型,枚举变量可以用任意整型赋值。而 c++中枚举
变量, 只能用被枚举出来的元素初始化。

#include<iostream>
using    namespace std;    
enum season    
{
SPR,
SUM,
AUT,
WIN
};    
int main()    
{    
enum season s = SPR;    
//s = 0;    //error,但是C语⾔可以通过
s = SUM;                
cout<<"s=    "<<    s<<endl;//1
return 0;    
}

 

posted @ 2019-03-03 14:58  西贡小傻  Views(171)  Comments(0Edit  收藏  举报