网站ipv6建设,施工企业审图ppt,做电影网站需要,wordpress果酱主题分享目录 1. C关键字
2. 命名空间
2.1 命名空间定义
2.2命名空间的使用
命名空间的使用有三种方式#xff1a;
1.加命名空间名称及作用域限定符
2.使用using将命名空间中某个成员引入
3.使用using namespace 命名空间名称 引入
3. C输入输出
4.缺省函数
4.1 缺省参…目录 1. C关键字
2. 命名空间
2.1 命名空间定义
2.2命名空间的使用
命名空间的使用有三种方式
1.加命名空间名称及作用域限定符
2.使用using将命名空间中某个成员引入
3.使用using namespace 命名空间名称 引入
3. C输入输出
4.缺省函数
4.1 缺省参数概念
4.2 缺省参数分类
全缺省参数半缺省参数
5. 函数重载
5.1 函数重载概念
1、参数类型不同
2、参数个数不同
3、参数类型顺序不同
5.2函数重载是如何实现的 1. C关键字
C总计63个关键字C语言32个关键字 2. 命名空间
在C/C中变量、函数和后面要学到的类都是大量存在的这些变量、函数和类的名称将都存 在于全局作用域中可能会导致很多冲突。使用命名空间的目的是对标识符的名称进行本地化 以避免命名冲突或名字污染namespace关键字的出现就是针对这种问题的。
在C语言中 定义了两个相同名字的函数再调通时会产生冲突尤其是在多人协同做项目时若其中有相同命名的函数则调用函数时会起冲突 为了解决这个问题在C中引入了命名空间namescpace
2.1 命名空间定义
定义命名空间需要使用到namespace关键字后面跟命名空间的名字然后接一对{}即可{} 中即为命名空间的成员。
#include iostream// 该命名空间的名字hardwork
namespace hardwork
{int rand 10;// 命名空间中可以定义变量/函数/类型int Add(int left, int right){return left right;}
}命名空间的嵌套
#include iostreamnamespace hardwork
{int rand 10;// 命名空间中可以定义变量/函数/类型int Add(int left, int right){return left right;}namespace Wang{int Sub(int left, int right){return left - right;}}
}同一个工程中允许存在多个相同名称的命名空间,编译器最后会合成同一个命名空间中一个工程中的test.h和上面test.cpp中两个N1会被合并成一个
// test.cpp
namespace N1
{int a;int b;int Add(int left, int right){return left right;}namespace N2{int c;int d;int Sub(int left, int right){return left - right;}}
}
// ps一个工程中的test.h和上面test.cpp中两个N1会被合并成一个
// test.h
namespace N1
{int Mul(int left, int right){return left * right;}
}注意一个命名空间就定义了一个新的作用域命名空间中的所有内容都局限于该命名空间中
2.2命名空间的使用
错误调用方法 编译报错 error: C2065 “a”: 未定义声明 此时为编译器并未找到被定义的a
命名空间的使用有三种方式
1.加命名空间名称及作用域限定符 namespace N1
{int a;int b;int Add(int left, int right){return left right;}
}int main()
{printf(%d\n,N1::a);
}
2.使用using将命名空间中某个成员引入 3.使用using namespace 命名空间名称 引入
作用是在代码中使用某个命名空间的成员时可以省略命名空间的前缀。通过using namespace指令编译器会在该命名空间中查找对应的标识符如果找到了就直接使用如果找不到则会引发编译错误! namespace N1
{int a;int b;int Add(int left, int right){return left right;}
}//using展开
using namespace N1;
int main()
{printf(%d\n,a);printf(%d\n,b);
}3. C输入输出
#includeiostream
// std是C标准库的命名空间名C将标准库的定义实现都放到这个命名空间中using namespace std;
int main()
{cout Hello world!!! endl;return 0;
}输出结果 Hello world!!! 使用cout标准输出对象(控制台)和cin标准输入对象(键盘)时必须包含 iostream 头文件 以及按命名空间使用方法使用std。cout和cin是全局的流对象endl是特殊的C符号表示换行输出他们都包含在包含 iostream 头文件中。是流插入运算符 、是流提取运算符。使用C输入输出更方便不需要像printf/scanf输入输出时那样需要手动控制格式。 C的输入输出可以自动识别变量类型。
注意早期标准库将所有功能在全局域中实现声明在.h后缀的头文件中使用时只需包含对应 头文件即可后来将其实现在std命名空间下为了和C头文件区分也为了正确使用命名空间规定C头文件不带.h
在C语言中: int a;double b;printf(%d %f,a,b);输出时需要指定输出变量类型
#include iostreamusing namespace std;
int main()
{int a;double b;char c;// 可以自动识别变量的类型//输出是无需指定类型cin a;cin b c;cout a endl;cout b c endl;return 0;
}std命名空间的使用惯例 std是C标准库的命名空间如何展开std使用更合理呢
在日常练习中建议直接using namespace std即可这样就很方便。using namespace std展开标准库就全部暴露出来了如果我们定义跟库重名的类型/对 象/函数就存在冲突问题。该问题在日常练习中很少出现但是项目开发中代码较多、规模 大就很容易出现。所以建议在项目开发中使用像std::cout这样使用时指定命名空间 using std::cout展开常用的库对象/类型等方式。
4.缺省函数
4.1 缺省参数概念
缺省参数是声明或定义函数时为函数的参数指定一个缺省值。在调用该函数时如果没有指定实 参则采用该形参的缺省值否则使用指定的参数
void Func1(int a 0)
{coutaendl;
}
void Func2(int b 10)
{coutbendl;
}int main()
{Func1(); // 没有传参时使用参数的默认值 (a0)Func1(10); // 传参时使用指定的实参(a10)Func1(); // 没有传参时使用参数的默认值 (b10)Func1(0); // 传参时使用指定的实参(b0) return 0;
}4.2 缺省参数分类
全缺省参数半缺省参数
void Func(int a 10, int b 20, int c 30)
{couta aendl;coutb bendl;coutc cendl;
}
int main()
{Func();Func(100,20);//Func(, ,30);错误用法缺省函数只能从头进行更改不能更改其中某一位置的值return 0;
}半缺省参数必须从右往左依次来给出不能间隔着给缺省参数不能在函数声明和定义中同时出现
//a.hvoid Func(int a 10);// a.cppvoid Func(int a 20){}
// 注意:如果生命与定义位置同时出现恰巧两个位置提供的值不同那编译器就无法确定到底该 用那个缺省值。正确定义方式
//a.hvoid Func(int a 10);// a.cppvoid Func(int a){}缺省值必须是常量或者全局变量C语言不支持(编译器不支持)
5. 函数重载
5.1 函数重载概念
函数重载: 是函数的一种特殊情况C允许在同一作用域中声明几个功能类似的同名函数这 些同名函数的形参列表(参数个数 或 类型 或 类型顺序)不同常用来处理实现功能类似数据类型 不同的问题。
1、参数类型不同
#includeiostreamusing namespace std;int Add(int left, int right)
{cout int Add(int left, int right) endl;return left right;
}double Add(double left, double right)
{cout double Add(double left, double right) endl;return left right;
}int main()
{int a1,b2;double c1.1,d1.1; Add(a,b);Add(c,d); return 0;
}2、参数个数不同
void f()
{cout f() endl;
}void f(int a)
{cout f(int a) endl;
}
int main()
{f();f(10);return 0;
}3、参数类型顺序不同 void f(int a, char b)
{cout f(int a,char b) endl;
} void f(char b, int a)
{cout f(char b, int a) endl;
}
int main()
{f(10, a);f(a, 10);return 0;
}5.2函数重载是如何实现的
在C/C中一个程序要运行起来需要经历以下几个阶段:预处理、编译、汇编、链接 C在编译时会对代码进行修饰 以该代码为例子
#includeiostreamusing namespace std;int Add(int left, int right)
{cout int Add(int left, int right) endl;return left right;
}double Add(double left, double right)
{cout double Add(double left, double right) endl;return left right;
}int main()
{int a1,b2;double c1.1,d1.1; Add(a,b);Add(c,d); return 0;
}运行时打开反汇编 就会发现反汇编中 // _Z3Addii
int Add(int left, int right)
{
}
// _Z3Adddd
double Add(double left, double right)
{
}在编译过程中对代码会找到相应函数并进行识别要使用的函数 故在c中会对函数名进行修饰。 通过这里就理解了C语言没办法支持重载因为同名函数没办法区分。而C是通过函数修
饰规则来区分只要参数不同修饰出来的名字就不一样就支持了重载 好了本篇先告一段落c入门篇2将很更新若喜欢的话还请留下一个免费的赞吧感激不尽