提示:以下是本篇文章正文内容,下面案例可供参考
在C++11中,auto是作为一个新的类型指示符来指示编译器,auto创建或声明的变量必须由编译器在编译时期根据之后的内容推导而得到实际类型(类似一个”占位符“)。故而使用auto定义变量时必须初始化。
如:auto a = 10; //int型
auto m ='M'; //char型
auto ptr=&a; //int*型
如:auto a = 1,b=3;
错误示范:auto x =5 , y =7.1;
用auto声明指针类型时,用auto和auto*没有任何区别,
但用auto声明引用类型时则必须加&。
如:
int a = 10;;
auto x=&a; == auto * x=&a;
auto &A =a;
在C++11中,引入了特定范围的for循环。for循环后的括号内由两部分组成:
①用于迭代的变量:
②迭代范围。
如: int test[5]={1,2,3,4,5};
for(auto x ; test)
cout<<x<<' ';
for循环迭代的范围必须是确定的,如数组中首元素和最后一个元素的范围,类中begin和end。
注意:与普通循环类似,可以用continue来结束本次循环,也可以用break来跳出整个循环。
NULL:NULL是一个宏,值为 0 或void* 0,常用于初始化没有合适指向的指针,如int * x = NULL;
nullptr:nullptr是一个关键字,类型是 nullptr_t。它的作用是可以转换为任何指针类型
先看如下代码:
void test(int) {cout<<"int"<<endl;}
void test(int * ) //函数重载 {cout<<"int * "<<endl;}
int main() { test(NULL); //这是打印”int“ 还是”int * “呢? return 0; }
在vs中输出结果是int。
正如前文,NULL可能被定义为字面常量0,或者被定义为无类型指针(void*)的常量。不论采取何 种定义,在使用空值的指针时,都可能会遇到一些麻烦。
由于在使用NULL时可能会出现意料之外的错误,故而大多数书籍推荐,在表示指针空nullptr。