女性做网站很有名的,怎么确定网站关键词,腾讯企点怎么登录,wordpress淘宝客建站文章目录 1.hello world2.引入namespace(命名空间/域问题)3.输入输出4.缺省参数/默认参数5.函数重载6.引用7.内联函数8.auto关键字#xff0c;基于范围的for循环#xff0c;空指针NULL8.1 auto8.2 基于范围的for循环8.3 nullptr 1.hello world
#include iostream
us… 文章目录 1.hello world2.引入namespace(命名空间/域问题)3.输入输出4.缺省参数/默认参数5.函数重载6.引用7.内联函数8.auto关键字基于范围的for循环空指针NULL8.1 auto8.2 基于范围的for循环8.3 nullptr 1.hello world
#include iostream
using namespace std;
int main()
{cout hello world endl;return 0;
}这便是C的hello world
2.引入namespace(命名空间/域问题)
在C/C中变量、函数和后面要学到的类都是大量存在的这些变量、函数和类的名称将都存 在于全局作用域中可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化 以避免命名冲突或名字污染namespace关键字的出现就是针对这种问题的。 当namespace后的空间的名字一样时C会帮我们合并起来。
namespace shuaige
{int rand 0;
}namespace shuaige
{int x 1;
}这样就会合并 除此之外namespace中还可以写函数结构体等。 对于命名空间我们一般不建议全部展开在大型项目时我们一般用什么展开什么大致如下
#includeiostream
using std::cout;
using std::endl;
namespace shuaige
{namespace zs{void push(){coutzszendl;}}int main()
{int i 0;std::cin i;cout xxxxxx endl;cout xxxxxx endl;bit::zs::Push();return 0;
}3.输入输出 4.缺省参数/默认参数
①第一种 ②第二种全缺省 可以这样花着玩但是不能跳跃着传参。 比如第一个不传二三传。一三传第二个不传 ③第三种半缺省(部分缺省) 其必须从右往左连续给也是不能跳跃 ④应用场景举例 这样就可以编译成功
5.函数重载
在学Cpp之前学了一下JAVA的基础语法JAVA里面也是有函数重载感觉是一样的 CPP语言允许同名函数要求函数名相同参数不同构成函数重载 1、参数类型的不同 2、参数个数不同 3、参数顺序不同(本质还是类型不同) 应该很好理解就举下面一个例子
6.引用
引用的最基本用法如下 引用不能代替指针的应用场景 野引用和引用返回 引用和指针的对比 在语法上 1.引用就是一个别名不需要开辟新空间指针是一个地址需要开辟新空间存贮地址 2.引用必须初始化指针初步初始化无所谓。 3.引用不能改变指向指针可以改变指向 4.引用相对指针更安全没有空引用但是指针有NULL。野指针很容易出现但是野引用不那么常见 5.在sizeof中含义不同引用结果为引用类型的大小但指针始终是地址空间所占字节个数(32 位平台下占4个字节)。 6.引用自加即引用的实体增加1指针自加即指针向后偏移一个类型的大小。 7.有多级指针但是没有多级引用。 8.访问实体方式不同指针需要显式解引用引用编译器自己处理。
在底层上 1.引用底层时用指针实现的会在底层开空间。和语法上是背离的。 2.在最底层汇编的层面上是没有引用的都是指针
7.内联函数 但是内联函数也是有缺陷的我们不能把所有函数都加上inline 如果全部使用内联函数那么最后我们生成的可执行程序会非常大这是不好的 inline是一种以空间(编译好的可执行程序)换时间的做法如果编译器将函数当成内联函数处理在编译阶段会用函数体替换函数调用缺陷可能会使目标文件变大优势少了调用开销提高程序运行效率。
8.auto关键字基于范围的for循环空指针NULL
8.1 auto
auto可以自动推导类型
int i0;
auto ki;//自动识别k是一个整数
auto p1i;//识别其是一个指针
auto *p2i;//这样本身定义了指针对右边是有要求的
auto *p3i//这样写就错了和上面做一个对比
auto ri;//复用 r是i的别名使用场景 注意: auto不能作为参数auto也不能定义数组不过现在auto可以作为返回值了。 但是不建议这样一直使用auto因为如果有多层嵌套我们很难推断出他到底是什么类型的值
8.2 基于范围的for循环
auto还有基于范围的for循环
int array[] { 1, 2, 3, 4, 5 };
for (int i 0; i sizeof(array) / sizeof(array[0]); i)
array[i] * 2;
for (int* p array; p array sizeof(array)/ sizeof(array[0]); p)
cout *p endl;其就和这个代码意思一样用起来十分方便。遍历数组可以多用这个方法
8.3 nullptr
C空指针问题