C语言课堂作业,c++一节课学会
第一篇,C关键字2,命名空间1,命名空间的定义2,命名空间的使用3,C输入输出4,缺省参数/缺省参数1,缺省参数的定义2,缺省参数的分类I,全部缺省参数II,半缺省参数V,函数重载VI,安全遇见你,不关注代码。
入坑C已经开始了。嗯,说实话,细节很多。怎么说呢?我相信,今天是灰色的,明天是灰色的,后天是美好的。来吧,孩子们。
一个人可能走得很快,但一群人会走得更远。既然路是灯,我们就一起成长,展现技术人员的风采!
1.C关键字C有63个关键字,而C语言只有32个关键字。
空对地导弹
做
如果
返回
尝试
继续
汽车
两倍
在一条直线上的
短的
数据类型说明
为
弯曲件
动态转换
(同Internationalorganizations)国际组织
签名
运算符
公众的
破裂
其他
长的
尺寸
栏目名称
扔
情况
列举型别
易变的
静电
联盟
wchar_t
捕捉
明确的
命名空间
静态_转换
无符号的
默认
茶
出口
新的
结构体
使用
朋友
班级
走读生
操作员
转换
虚拟的
注册
常数
错误的
私人的
模板
空的
真实的
常量_cast
漂浮物
保护
这
不稳定的
正在…
删除
转到
重新解释_转换
这里就不赘述了,后面再解释。
第二,命名空间在C中,变量、函数、类型丰富。如果它们都存在于全局范围内,可能会导致许多冲突。使用namespace的目的是将标识符的名称本地化,避免命名冲突和名称污染,namespace关键字的出现就是针对这个问题。
示例:
#包含stdio.h
int rand=0;
int main()
{
printf(%d\n ,rand);
返回0;
}上面的代码没问题,但是程序加了这个头文件就挂起了。
#包含stdio.h
#包含stdlib.h
int rand=0;
int main()
{
printf(%d\n ,rand);
返回0;
}
Rand()是一个库函数,存在于stdlib.h头文件中,编译时会展开头文件。此时,变量rand和库函数rand都存在于同一个作用域(全局作用域)中。
从上面的错误演示可以看出,同名的变量不能出现在同一个作用域内,因为这样会导致命名冲突。这个问题在C语言中没有很好的解决,但是在C中引入了命名空间来解决,可以在命名空间中定义变量、函数和类型。
改变它的正确方法是什么?
#包含stdio.h
#包含stdlib.h
名称空间SL//名称空间域
{
int rand=0;
}
int main()
{
printf(%d\n ,SL:rand);//:域范围限定符。如果左侧为空,则默认为全局范围内的rand。
返回0;
}
1.命名空间的定义要定义一个命名空间,需要使用namespace关键字,后跟命名空间的名称,然后是一对{},其中{}是命名空间的成员。
公共名称空间的定义
名称空间SL//SL是名称空间的名称。
{
//命名空间中的内容,即可以定义变量、函数和类型。
int a=0;
int Add(int x,int y)
{
返回x y;
}
结构节点
{
int val
结构节点* next
};
}命名空间支持嵌套和重名。
命名空间字节
{
int a=0;
命名空间数据//命名空间可以嵌套,一般有2~3层。
{
结构节点
{
int val
结构节点* next
};
}
}
//同一个项目中允许有多个同名的命名空间,编译器最终会合并到同一个命名空间中。
命名空间字节
{
int b=0;
命名空间缓存
{
结构节点
{
int val
结构节点* next
}
}
}
注意:
定义一个命名空间相当于定义一个新的作用域,命名空间中的所有内容都被限制在命名空间内;
命名空间不会影响变量的生命周期,命名空间的定义只能是全局的,不能是局部的。例如,在main函数中定义它们是错误的,一般名称空间都是在头文件下定义的。
总结:
命名空间中的内容:可以定义变量、函数和类型;命名空间支持嵌套(防止项目太大造成命名冲突);允许同名的命名空间同时存在,编译时编译器会自动合并。
2.使用名称空间//意味着将名称空间字节中的内容输出。
使用命名空间字节;
//这两行代码的意思是先扩展字节,再扩展数据。如果顺序反了就是错的,和用命名空间byte:data的意思不一样;
使用命名空间数据;
//注意字节中的缓存在这里是展开的,但是字节没有展开。
使用命名空间byte:cache;使用意义:将命名空间中的内容全部或部分输出。
使用命名空间字节;//让他们都出去
使用命名空间byte:a;//使用部分发布的名称空间的三种方法:
添加命名空间名称和范围限定符STD:cout byte:a STD:endl;使用using将命名空间中的成员(通常用来放一些常用的)引入using STD:cout;
使用STD:endl;
使用byte:a;
cout a endl
cout byte:b endl;使用using命名空间引入(put all)using命名空间字节;
使用命名空间std
//std是C标准库的命名空间。虽然都用起来很方便,但是有冲突的风险。所以写一些练习题的时候可以全部放出来,不要在意冲突。一般情况下,没必要全部放出来。
C I/O下面是C如何迎接世界:
#包括iostream
使用STD:cout;
使用STD:endl;
int main()
{
cout“你好,世界!”endl
返回0;
}描述:
使用cout标准输出(控制台)和cin标准输入(键盘)时,必须包含头文件和std标准命名空间;注意:早期的标准库实现了全局域的所有函数,在头文件中用。h后缀,后来它实际上会在std命名空间中。为了区别于C头文件,也为了正确使用命名空间,规定使用C输入输出更方便,不需要。h在C头文件中,并且不需要增加数据格式控制,如%d,%c等。
四。默认参数/默认参数默认参数可以形象地比喻为我们生活中的备胎。嗯,C中函数的参数可以配轮胎,但是注意C语言不支持默认参数。
1.默认参数的定义默认参数是在声明或定义函数时为函数的参数指定一个默认值。
调用此函数时,如果没有指定参数,将采用默认值,否则,将使用指定的参数。
void TestFunc(int a=0)
{
cout a endl
}
int main()
{
test func();//当没有传递参数时,使用参数的默认值
test func(10);//传递参数时,使用指定的参数。
返回0;
}
2.默认参数分类
一、所有默认参数所有默认参数是指所有默认参数/默认参数。
void TestFunc(int a=10,int b=20,int c=30)
{
cout a= a endl
cout c= c endl
}
二。半默认参数半默认参数是指部分默认值。注意:半默认参数必须从右到左给定,不能间隔给定。
例如,下面的代码是正确的:
void TestFunc(int a,int b=10,int c=20)
{
.
}如果是这样给的,那就是错的
void TestFunc(int a=10,int b,int c=20)
{
.
}注意:
缺省参数不能在声明和定义中同时给定,因为如果声明和定义同时给定,而刚刚提供的值不同,那么编译器就无法确定使用哪个缺省值;给,定义不给——可以;如果不声明,就不能定义为——(编译时编译器读取函数声明,链接时读取函数定义。综上所述,默认参数是在声明函数时给出的,而不是在定义函数时给出的。
那么很多人可能会问,默认参数有什么用?
下面是一个半默认的例子:
结构堆栈
{
int * a;
int top
int容量;
}
void StackInit(struct Stack* ps,int n=4)
{
assert(PS);
PS-a=(int *)malloc(sizeof(int)* n);
PS-top=0;
ps-容量=n;
}
int main()
{
结构堆栈ST;
StackInit( st,100);
返回0;
}
动词(verb的缩写)函数重载
要求:同一个函数名,不同的函数参数指的是不同的参数个数/类型/顺序(参数类型顺序)。注意,它与返回值的类型无关。
C不支持同名函数,但C支持。
例如:
int Add(int left,int right)
{
向左向右返回;
}
双加法(双左,双右)
{
向左向右返回;
}函数重载这部分很重要,在面试的时候经常被考察,比如下面这些面试问题:
下面两个函数能形成重载吗?问题是什么或者在什么情况下会发生?void TestFunc(int a=10)
{
cout void test func(int) endl;
}
void TestFunc(int a)
{
cout void test func(int) endl;
}为什么C语言不支持函数重载?C函数重载底层是如何处理的?一个函数可以按照C语言的风格用C编译吗?这些问题会在下一篇博文中详细解释,敬请关注。
六、遇见安然遇见你,不辜负守则。
安然无恙。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。