\n, \t, \a, \r
分别是换行,横向制表,响铃,回车。\1234
则便是两个字符,分别是123对应的字符以及字符 4.eg: double price=0.9, disconut=price*0.15
int a=0;
int a={0};
int a(0);
int a{0};
这四种初始化方式c++11都是支持的。c++11中用花括号来初始化变量得到了全面应用。
extern int j;
就指标是声明j,在后面的代码中还可以定义int j=0;
,这样都是正确的,特别的,任何进行了显式初始化的声明即成为定义,且函数内部不允许使用这样的extern关键字。变量仅能被定义一次,但可以声明多次.复合类型这里主要指的是引用和指针。
*
。
空指针不指向任何对象,一个好的习惯是在使用一个指针之前检查一下其是否为空,c++11中允许使用nullptr
来初始化一个指针为空。也可以使用NULL,在新的c++程序中应该避免这样使用。
指针相等 1. 都为空 2. 指向同一个对象 3. 都指向同一个对象的下一个地址。 值得注意的是,一个指针指向某对象,一个指针指向这个对象的下一个位置,这两个指针也可能相等。int x=4, cosnt &r=x;
这样的写法是没有问题的,允许将cosnt int &绑定到一个普通的int对象上。但是不允许用将普通的引用绑定到常量上:const int &r1=4; int &r2=r1*4;
这样是不合法的。typedef
这是传统的做法: typedef double wages;
那么wages就是double的同义词。
c++11新规定了一种用法: using SI=double;
也是可以用类型别名。 int i=4, *p=&i, &r=i;
decltype(r+0) b; //r是引用,但r+0得到的结果是一个int,相当于 int b;
decltype(*p) c; //这个是不对的,有解引用操作得到的是引用,引用是必须初始化的。
//双括号强制得到引用;
decltype((i)) d; //错误,(())得到的是引用,必须初始化
decltype(i) e; //正确