济南网站优化哪里做的好,制作社交网站,网站建设运营计划书,百度大数据平台前言#xff1a;本篇文章的重点 1.C中的类型指示符auto 2.借由auto实现的范围for 3.C为什么要创建nullptr而不是用原本的NULL。 目录 一.auto1.auto的含义及使用2.auto使用注意事项3.范围for#xff08;重头戏#xff09;范围for注意事项 二.nullptr 一.auto
1.auto的含义及…前言本篇文章的重点 1.C中的类型指示符auto 2.借由auto实现的范围for 3.C为什么要创建nullptr而不是用原本的NULL。 目录 一.auto1.auto的含义及使用2.auto使用注意事项3.范围for重头戏范围for注意事项 二.nullptr 一.auto
1.auto的含义及使用 在C11中标准委员会赋予了auto的含义为auto不再是一个存储类型指示符而是作为一个新的类型指示符来指示编译器auto声明的变量必须由编译器在编译时推导而得到。 #includeiostream
using namespace std;int main()
{int a 10;auto b 20; auto c x;auto d 1.1;//typeid(变量名).name()能够显示变量的类型cout typeid(a).name() endl; cout typeid(b).name() endl;cout typeid(c).name() endl;cout typeid(d).name() endl;、//auto e 错误示范auto变量必须在定义时初始化return 0;
}注意使用auto定义变量时必须初始化因为编译阶段编译器需要根据初始化表达式来推导auto的实际类型因此auto并非是一种“类型”的声明而是一个类型声明时的“占位符”编译器在编译阶段会将auto替换为变量实际的类型。 2.auto使用注意事项 1.定义变量时必须初始化这点在上面提到过了。 2.定义一行时数据必须是同一种类型。 3 .auto不能作为函数的参数 这点跟第一点有关系因为参数没有初始化。 4.auto不能直接用来声明数组 3.范围for重头戏 C语言中的for循环遍历在C中有着更为便捷的方式——范围for使用起来非常方便。 int main()
{int arr1[] { 1,2,3 };//C语言写法for (int i 0; i sizeof(arr1) / sizeof(int); i){cout arr1[i] ;}cout endl;//C写法//1.依次取arr1中数据赋值给x//2.自动判定结束//3.自动迭代for (auto x: arr1){cout x ;}return 0;
}范围for注意事项
仍以上述代码为例各位觉得下面代码运行后显示的是什么
int main()
{int arr1[] { 1,2,3 };for (auto x: arr1){x x*2;}for (auto x : arr1){cout x ;}return 0;
}运行结果如下可以看到数据并没有*2这是因为上述代码只是依次取arr1中数据赋值给xx的改变并不会影响数组中的数据。 那么若是想改变该怎么办呢 答可以使用引用 auto后加上,代表x是数组中数据的别名这样改变x就会改变数组中的数据 但是不能使用指针因为指针类型与原数据类型不匹配。 这种时候就可以看到C使用引用的高明之处了。 int main()
{int arr1[] { 1,2,3 };for (auto x: arr1) //auto后加上,代表x是数组中数据的别名这样改变x就会改变数组中的数据{x x*2;}/*for (auto* x : arr1) //auto* 类型与arr1数据类型int不匹配{x x * 2;}*/for (auto x : arr1){cout x ;}return 0;
}二.nullptr 前面的几篇文章提到过C语言中的漏洞很多nullptr就是为了弥补NULL的不足而诞生的。 下例通过函数重载构建func函数各位觉得显示的是什么 按照我们设计代码的初衷Func0应该打印int而FuncNULL应该打印int*。 void Func(int x)
{cout int endl;
}
void Func(int* x)
{cout int* endl;
}
int main()
{Func(0);Func(NULL);Func(nullptr);
}运行结果如下 可以发现FuncNULL调用的是第一个函数与预期结果不同。 这是因为在C语言中有个一个宏定义#define NULL 0NULL被定义为字面常量0。 因此为了代码的健壮性C后来创建了nullptr。 文末BB对哪里有问题的朋友尽管在评论区留言若哪里写的有问题也欢迎朋友们在评论区指出博主看到后会第一时间确定修改。最后制作不易如果对朋友们有帮助的话,希望能给博主点点赞和关注.