C语言的主函数关键字是,C/C++关键字相关

1. volatile在程序设计中有什么作用?

为提高存取速度,编译器优化有时会把变量读取到寄存器中,当以后再使用该变量时,直接从寄存器中取值,当变量在本线程里改变时,会同时把变量的新值复制到该寄存器中,以便保持一致。

volatile是一个类型修饰符,用来修饰被不同线程访问和修改的变量。被volatile类型定义的对象,系统每次都从内存中读取数值,而非从寄存器中读取,以适应在多线程的情况下未知时间发生的变化。

2. 断言ASSERT()是什么?

ASSERT()一般称为断言,它是一个调试程序经常使用到的宏,定义在头文件中,通常用于判断程序中是否出现了非法的数据。在程序运行时,它计算括号内表达式的值,如果等于0,则程序报错,终止运行。

注意:

ASSERT()捕获的是非法情况,只在debug版本中起作用,release版本则会被自动忽略。

ASSERT()与assert()的区别在于前者是宏,后者是ANSIC标准中规定的函数,两者功能相似,但后者可以利用在release版本中。

3. 枚举的值如何计算?

枚举的值默认为前一个数字加1。如果第一个枚举的值没有赋值,则其默认值为0

enum{a, b = -2, c, d = 5, e};

cout<

4. main()函数中argc和argv的含义?

C语言的设计原则是把程序作为程序的构成模块。允许main()函数有两个参数或者没有参数。

命令行参数有时用来启动一个程序,如int main(int argc, char* argv),其中第一个参数表示参数中命令行的数目,由程序自动统计,第二个参数argv是一个指向字符串的指针数组,参数数目没有内在限制。

值得注意的是,argv[0]总是指向程序名,因此argc >= 1。

5. 引用使用时应注意什么?

不能返回局部变量,局部变量存储在栈区,在函数返回后将被销毁。

不能返回函数内部分配的内存的引用。被函数返回的引用只是作为一个局部变量存在,由于没有赋予一个实际的变量,这个引用所指向的空间将无法释放,造成内存泄漏。

返回类成员的引用时,最好返回常引用,防止类成员的封装性遭到破坏。

IO对象无拷贝或复制,只能通过传引用的方式传递。

6. C++中,如何实现模板函数的外部调用?

export关键字的目的是实现模板函数的外部调用,类似于extern关键字。

为了访问其他代码文件中的变量或对象,对普通类型(包括基本数据类、结构和类)可以利用关键字extern来使用这些变量。

对于模板类型,则可以在头文件中声明模板类和模板函数,在代码文件中使用关键字export来定义具体的模板了对象和模板函数。再其他用户代码包含声明头文件后,就可以使用这些对象和函数了。

extern int n;

extern struct A a;

extern class Point p;

export template class Stack s;

export template void f(T& t){ }

7. explicit关键字有什么作用?

explicit关键字可以阻止隐式转换,声明为explicit的构造函数不能在隐式转换使用。

class TestE1

{

public:

TestE1(int n){num = n;}

private:

int num;

};

class TestE2

{

public:

explicit TestE2(int n){num = n;}

private:

int num;

};

int main()

{

TestE1 t1 = 12;//隐式调用其构造函数,成功

TestE2 t2 = 12;//隐式调用其构造函数,失败

TestE2 t3(12);//显示调用,成功

return 0;

}

8. C语言中不能再函数内定义函数吗?

不可以,即使主函数中也不可以,C语言只允许在函数中声明和嵌套调用。

C语言中是不允许作嵌套的函数定义。因此程序中各个函数之间是平行的,不存在上一级函数和下一级函数的问题,这样是为了简化C语言编译器的逻辑性。

9. C++中异常的处理方式?

C++中处理异常的关键字有try,throw,catch,finally。try语句执行可能存在异常的代码, throw语句抛出异常,catch用于处理异常。finally后的语句块是不管异常是否发生都将执行的代码。

以下代码演示要求用户输入一个小于等于10的数字,不满足要求则抛出异常。

#include

#include

int main()

{

int num = 0;

while(cin >> num)

{

try

{

if(num > 10)

throw runtime_error("输入的数字大于10,不满足要求!");

}

catch (runtime_error err)

{

cout << err.what() <

char select;

cin >> select;

if(select == 'N' || !cin)

break;

cin >> num;

}

}

return 0;

};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值