C语言基础知识(13)

本文介绍了C语言中的基本概念,包括getch()和getche()的区别,如何生成随机数,malloc与delete的使用规范,换行转义序列的含义,整型数值范围,__stdcall与__cdecl的调用约定,以及C语言和C++中const常量的差异。

getch()和getche()之间有什么区别

getch()函数从键盘上读取一个字符。它不使用任何缓冲区,所以输入的数据不会显示在输出屏幕上

getche()函数从关键词中读取一个字符,但数据会显示在输出屏幕上。按Alt+f5可以看到输入的字符

在c语言中如何产生随机数

rand 函数就是用来产生随机数的,它可以产生任意从0开始的整数

malloc申请的存储空间能用delete释放吗

不能,malloc /free主要为了兼容C,new和delete 完全可以取代malloc /free的。malloc /free的操作对象都是必须明确大小的。而且不能用在动态类上。new 和delete会自动进行类型检查和大小,malloc/free不能执行构造函数与析构函数,所以动态对象它是不行的。当然从理论上说使用malloc申请的内存是可以通过delete释放的。不过一般不这样写的。而且也不能保证每个C++的运行时都能正常。

什么是换行转义序列

换行转义序列用"\n"表示。它在输出屏幕上插入一个新行

能不能在整型中存放32768这个数

整数类型可以存放从-32768~32767之间的任何数值。但是32768不在这个范围之内。这个时候modifier是我们需要的东西。Long Int数据类型就可以存放这个数。

__stdcall和__cdecl的区别

__stdcall是函数恢复堆栈,只有在函数代码的结尾出现一次恢复堆栈的代码;在编译时就规定了参数个数,无法实现不定个数的参数调用;__cdecl是调用者恢复堆栈,假设有100个函数调用函数a,那么内存中就有100端恢复堆栈的代码;可以不定参数个数;每一个调用它的函数都包含清空堆栈的代码,所以产生的可执行文件大小会比调用__stacall函数大

在丹尼斯-里奇之后,谁是设计C语言的主要贡献者

Brain Kernighan

在c语言中可以自定义头文件吗

是的, 当然可以, 定义完头文件以后可以存放函数的原型。使用的时候, 用include来包含这个文件的名字。

在C中用const 能定义真正意义上的常量吗?C++中的const呢

不能。c中的const仅仅是从编译层来限定,不允许对const 变量进行赋值操作,在运行期是无效的,所以并非是真正的常量(比如通过指针对const变量是可以修改值的),但是c++中是有区别的,c++在编译时会把const常量加入符号表,以后(仍然在编译期)遇到这个变量会从符号表中查找,所以在C++中是不可能修改到const变量的。

补充:

1)c中的局部const常量存储在栈空间,全局const常量存在只读存储区,所以全局const常量也是无法修改的,它是一个只读变量。

2)这里需要说明的是,常量并非仅仅是不可修改,而是相对于变量,它的值在编译期已经决定,而不是在运行时决定。

3)c++中的const 和宏定义是有区别的,宏是在预编译期直接进行文本替换,而const发生在编译期,是可以进行类型检查和作用域检查的。

4)c语言中只有enum可以实现真正的常量。

5)c++中只有用字面量初始化的const常量会被加入符号表,而变量初始化的const常量依然只是只读变量。

6)c++中const成员为只读变量,可以通过指针修改const成员的值,另外const成员变量只能在初始化列表中进行初始化。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

xiaoyi9812

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值