C++入门:auto关键字介绍、指针空值nullptr、基于范围的for循环
1. auto
在早期C/C++中auto的含义是:使用auto修饰变量,具有自动存储器的局部变量,C++11中,auto不再是存储类型指示符,而是作为一种新的类型指示符来指示编译器,auto表示由编译器静态判断其应有的类型
auto使用细则
1.1auto和指针或引用结合使用
用auto声明指针类型时,用auto和auto* 没有任何区别,但是用auto引用类型时必须加&
如:
int x= 10;
auto * a=&x; //等价于 auto a =&x;
auto & c=x;
1.2 在同一行定义对个变量
在同一行定义多个变量,这些变量必须具有相同类型,否则会产生编译失败。
1.3 auto不适用于函数的参数
1.4 auto不能直接用来声明数组
2. 指针空值nullptr
NULL可能被定义为字面常量0,或者被定义为无类型指针(void *),为避免NULL作为空指针使用时被定义为0,引入新的关键字nullptr表示指针空值,sizeof(nullptr)与sizeof((void *)0)所占字节相同。
3.基于范围的for循环
在C++98中如果要遍历一个数组,可以按照以下方式进行:
int arr[]={1,2,3,4};
for (int i=0;i<sizrof(arr)/sizeif(arr[0]);++i)
arr[i]*=2;
for(int * p=arr;p<arr+sizeof(arr)/sizeof(arr[0]);++p)
count<<*p <<end1;
对于有范围的集合而言,由程序员来说明循环的范围是多余的,有时还会犯错,因此C++11中引用了基于循环范围的for循环。for循环后的括号由冒号“:”分为两部分,第一部分是范围内用于迭代的变量,第二部分是表示被迭代的范围。
注意:基于范围的 for 循环执行时,其范围变量将仅包含一个数组元素的副本。因此,不能使用基于范围的 for 循环来修改数组的内容,除非将范围变量声明为一个引用。引用变量是数组元素的一个别名,任何对于引用变量的修改都将实际作用于别名所代表的数组元素的值。
for (int &x : arr) // 使用引用解决了修改原始数组的问题
{
x = x * 2; // 尝试修改数组元素值
cout << "修改数组元素值:" << x << endl;
}
for (int x : arr)
{
cout << "修改后实际数组元素值:" << x << endl;
}
//修改数组元素值:2
//修改数组元素值:4
//修改数组元素值:6
//修改数组元素值:8
//修改后实际数组元素值:2
//修改后实际数组元素值:4
//修改后实际数组元素值:6
//修改后实际数组元素值:8
——————————————
基于范围的for循环转载:https://blog.csdn.net/Usain_Bolt_/article/details/106540383
版权声明:本文为shuangweiyebai原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。