上海市建设考核中心网站,wordpress增加访问性能,品牌家具排行榜前十名,北京网站seo排名目录
C关键字
C命名空间
命名空间的介绍
域作用限定符
命名空间的使用
C的输入以及输出
C中的缺省参数
缺省参数的介绍
缺省参数的使用
缺省参数的分类
全缺省参数
半缺省参数 C关键字
在C中#xff0c;有63个关键字#xff0c;而C语言只有32个关键字
asm do i…目录
C关键字
C命名空间
命名空间的介绍
域作用限定符
命名空间的使用
C的输入以及输出
C中的缺省参数
缺省参数的介绍
缺省参数的使用
缺省参数的分类
全缺省参数
半缺省参数 C关键字
在C中有63个关键字而C语言只有32个关键字
asm do if return try continue auto double inline short typedef for
bool dynamic_cast int signed typeid public break else long sizeof typename
throw case enum mutable static union wchar_t catch explicit namespace
static_cast unsigned default char export new struct using friend class extern operator switch virtual register const false private template void true
const_cast float protected this volatile while delete goto reinterpret_cast 这些关键字不需要死记硬背
C命名空间
命名空间的介绍
在C中变量、函数和类都是大量存在的这些变量、函数和类的名称将都存在于全局作用域中可能会导致很多冲突。而使用命名空间的目的是对标识符的名称进行本地化以避免命名冲突或名字污染namespace关键字的出现就是针对这种问题的而定义一个命名空间就相当于定义了一个新的作用域命名空间中的所有内容都局限于该命名空间中
例如在C语言中对于下面的程序
#include stdio.h
#include stdlib.hint rand 10;int main()
{printf(%d\n, rand);return 0;
}
报错内容
“rand”: 重定义以前的定义是“函数”
因为在C语言中存在一个名为rand()的函数此时若将变量名定义为rand会与标准库中rand()函数名产生冲突而C语言能解决这个问题方法只有更改变量名否则没有其他办法
但是在C中可以使用命名空间解决这个问题
所谓命名空间指当前命名的变量所处的空间在命名空间中可以声明变量/类型/函数例如
//命名空间1
namespace test1
{//变量int i 0;//类型struct Student{int age;char name[20];};//函数int add(int x, int y){return x y;}
}
在C中使用namespace关键字创建命名空间语法如下
namespace 命名空间名
{//变量/函数/类型
}//注意最后一行不需要分号不同于结构体
在C中命名空间可以嵌套定义例如
//命名空间2
namespace test2
{int num 0;//命名空间3namespace test3{int num 0;}
}
对于上面的代码在命名空间test2中嵌套定义了一个命名空间test3
有了命名空间就可以解决上面C语言出现的问题解决方法如下
//头文件NameSpace.h中的命名空间4
//将rand变量放入命名空间test4中
namespace test4
{int rand 10;
}//测试文件
//C主函数
#include iostream
#include stdlib.h
#include NameSpace.hint main()
{//调用命名空间4中的rand变量而不是标准库中的rand()函数printf(%d\n, test4::rand);return 0;
}
输出结果
10
域作用限定符
在C中::表示域作用限定符使用方法如下
空间 :: 变量/类型/对象名
当::左侧空间为空时默认在全局中寻找::右侧的内容例如
//NameSpace.h文件中的命名空间2与嵌套的命名空间3
//命名空间2
namespace test2
{int num 20;//命名空间3namespace test3{int num 30;}
}//C主函数
#include iostream
#include stdlib.h
#include NameSpace.h//全局变量
int num 10;int main()
{//域作用限定符//局部变量int num 0;printf(%d\n, num);//全局变量printf(%d\n, ::num);//指定命名空间的变量printf(%d\n, test2::num);//嵌套的命名空间的变量printf(%d\n, test2::test3::num);return 0;
}
输出结果
0
10
20
30
命名空间的使用
在C中有三种使用命名空间的方法
加命名空间名称及作用域限定符例如N::a使用using将命名空间中某个成员引入也称部分展开例如using N::a使用using将命名空间整体引入也称全局展开例如using namespace N
测试实例
//NameSpace.h中的命名空间1
namespace test1
{//变量int i 10;//类型struct Student{int age;char name[20];};//函数int add(int x, int y){return x y;}
}//加命名空间名称及作用域限定符
#include iostream
#include NameSpace.hint main()
{printf(%d, test1::i);return 0;
}
输出结果
10//部分展开
#include iostream
#include NameSpace.h
using test1::i;int main()
{printf(%d, i);return 0;
}
输出结果
10//全局展开
#include iostream
#include NameSpace.h
using namespace test1;int main()
{printf(%d\n, i);return 0;
}
输出结果
10 在实际使用过程中更推荐指定以及部分展开如果只是自己练习时更推荐使用全局展开
注意使用 using namespace N并不代表在函数中不可以指定部分展开和全局展开都只是改变寻找方式并不是使用了其中一种方式其他方式不可以再使用只是大范围会包括小范围而如果已经全局展开那么再指定将直接去指定的命名空间找而不是在全局展开的命名空间中找 当存在两个相同的命名空间时会被合并成一个命名空间而不是直接覆盖例如
//NameSpace.h中的两个重名的命名空间
//两个同名的命名空间
namespace test5
{int num1 10;
}namespace test5
{int num2 20;
}//测试文件
//同名命名空间合并
#include iostream
#include NameSpace.h
using namespace std;
using namespace test5;int main()
{cout test5::num1 endl;cout test5::num2 endl;return 0;
}
输出结果
10
20
C的输入以及输出
在C中可以使用cout和cin配合流插入运算符和流提取运算符使用例如 使用cout和cin时需要包含头文件iostream注意C的标准库头文件不包含不带有.h并且需要引入命名空间stdC中的标准命名空间或者直接指定。因此推荐使用iostreamstd的方式
//C的输入和输出
#include iostream
using namespace std;int main()
{int num 0;cout 请输入数值;cin num;cout num endl;return 0;
}
输入
10
输出结果
请输入数值10
10
在上面的代码中定义了一个num变量通过标准输入对象cin和流提取运算符控制变量num的输入不同于C语言此处输入可以不需要取地址运算符对变量内容的输出使用标准输出对象cout和流插入运算符控制内容的输出而endl表示换行符作用效果类似\n
在C中输入和输出可以自动识别变量类型故输出和输入不需要占位符
#include iostream
using namespace std;int main()
{//int num 0;//cout 请输入数值;//cin num;//cout num endl;int num 0;double num1 0;char c 0;cin num num1 c;//多组内容的输入相当于scanf(%d%lf%c, num, num1, c);cout num num1 c;//多组内容输出相当于printf(%d %f %c, num, num1, c);return 0;
}
输入
1 2.5 c
输出结果
1 2.5 c 同scanf一样cin会自动忽略空白字符
也可以使用指定的方式使用cout和cin
//C的输入和输出
#include iostreamint main()
{int num 0;std::cin num;std::cout num std::endl;return 0;
}
输入
10
输出
10
C中的缺省参数
缺省参数的介绍
在C中缺省参数是指在函数的定义以及声明中可以为形式参数赋值例如
int add(int x 0, int y 0)
{return (x y);
}
在上面的代码中变量x和变量y赋值为0称x和y为缺省参数两个0为两个缺省参数的缺省值缺省值必须是常量或者全局变量
如果调用add函数时不传入实际参数或者同类型数值时则add函数直接使用缺省参数的数值进行计算例如
#include iostream
using namespace std;int add(int x 0, int y 0)
{return (x y);
}int main()
{//调用add函数不传参数cout add() endl;//调用add函数传一个参数cout add(1) endl;//调用addd函数传两个参数cout add(1, 2) endl;return 0;
}
输出结果
0
1
3
缺省参数的使用
在C中缺省参数有两种第一种是全缺省参数第二种是半缺省参数
在使用缺省参数时必须遵循从右往左连续使用不可以跳跃式使用例如对于下面的函数
int add(int x 0, int y 0, int z 0)
{return (x y);
}
使用时满足从右往左使用
//缺省参数
#include iostream
using namespace std;int add1(int x 0, int y 0, int z 0)
{return (x y);
}int main()
{//使用缺省参数时必须从右往左连续使用//正确使用方法add1(1, 2);//使用第三个缺省参数add1(1);//使用第二个和第三个缺省参数add1();//使用全部缺省参数add1(1, 2, 3);//不使用缺省参数//错误使用方法add1(1, , 2);//不可以直接使用第二个缺省参数add1(, 1, 2);//不可以直接使用第一个缺省参数add1(, , 1);//不可以直接使用第一个和第二个缺省参数add1(, 1, );//不可以直接使用第一个和第三个缺省参数return 0;
} “从右往左使用”意思是当调用函数给函数传递实际参数时第一个实参对应着第一个第一个形参第二个实参对应着第二个形参第三个实参对应着第三个形参使用缺省参数时当只传递一个实际参数时该实际参数对应着第一个形参此时使用第二个和第三个缺省参数同理当传递两个实际参数时两个实际参数对应的前两个形参使用第三个缺省参数即总是满足最右边的缺省参数是第一个使用的
“连续使用”意思是给函数传递实际参数到形参时不能出现类似于第一个实际参数传给第一个形参第二个实际参数不传内容第三个实际参数传递给形参等间隔性的传递
缺省参数的分类
在C中缺省参数分为
全缺省参数半缺省参数
全缺省参数
全缺省参数是指在函数声明或定义时所有变量都是缺省参数例如
int add1(int x 0, int y 0, int z 0)
{return (x y);
}
半缺省参数
半缺省参数是指在函数声明或定义中部分变量是缺省参数例如
int add1(int x, int y 0, int z 0)//只有y和z是缺省变量
{return (x y);
}
半缺省参数中必须满足从右往左依次连续给出不可以跳跃式给缺省参数由于从右往左使用的原则不是缺省变量的需要在调用时传递实际参数例如
//半缺省参数
int add2(int x, int y 0, int z 0)
{return (x y);
}int add3(int x, int y, int z 0)
{return (x y);
}//不可以跳跃式给缺省值
int add4(int x 0, int y, int z)
{return (x y);
}int add5(int x, int y 0, int z)
{return (x y);
}int main()
{add2(1);//只有一个不是缺省参数时必须为该形参传递实参add3(1, 2);//有两个不是缺省参数时必须为两个形参传递实参add4(, 2, 3);//不可以使用需要满足从右往左使用缺省参数的原则add5(1, , 3);//不可以使用需要满足从右往左使用缺省参数的原则return 0;
}
声明和定义函数缺省参数时一般建议声明时给缺省参数和缺省值而定义时不给缺省值例如
//NameSpace.h中的函数声明
int add6(int a 20);//测试文件
//定义不给缺省值
int add6(int a)
{return a;
}#include iostream
#include NameSpace.h
using namespace std;int main()
{coutadd6(2) ;coutadd6()\n;return 0;
}
输出结果:
2 20