1.C 域操作符"::"
int value = 0;
void prinvalue()
{
printf("value = %d\n",value);
}
int main()
{
int value = 0;
value = 1; printf("value = %d\n",value);
::value = 2; prinvalue();
return 0;
}
在C 中可以直接通过域操作符"::"来直接操作全局变量,但是在C语言中不支持这个操作符。
2.i 与 i哪个效率更高
(1)在内建数据类型的情况下效率没有区别;
(2)在自定义数据类型的情况下, i效率高。 i可以返回对象的引用,i 必须返回对象的值,所以在大对
象的时候产生了较大的复制开销,导致效率降低。
3.将数a、b的值进行交换,三种方法比较,参数都采用引用传值方式
void swap1(int& a,int& b)
{
int temp = a; //使用中间变量完成交换
a = b;
b = temp;
}
void swap2(int& a,int& b)
{
a = a+b; //使用加减运算完成交换
b = a - b;
a = a - b;
}
void swap3(int& a,int& b)
{
a^=b; //使用异或运算完成交换
b^=a;
a^=b;
}
三种方法比较:swap1需要额外的临时变量,内存有开销;swap2有可能导致数据溢出;推荐使用swap3;
4.C和C 联系与区别
C是一个结构化语言,重点在于算法和数据结构,是C 的子集。
C程序的设计考虑的是如何通过一个过程对输入进行运算处理得到输出;而C 的程序设计考虑是把应用如何构
造一个对象模型,通过获取对象的状态信息得到输出或者实现过程控制。因此二者最大的区别是解决问题的思
想方法不一样,C是面向过程化的,C 是面向对象化的。
5.extern "C"有什么作用,它有双重含义
(1)被它修饰的目标是"extern"的,即告诉编译器其声明的函数和变量可以在本模块或其他模块中使用。
(2)被它修饰的目标是"C"的,即其修饰的变量和函数是按照C语言方式编译和链接的。
extern "C"是C 编译器提供的与C连接交换指定的符号,用来解决名字匹配问题。
6.main函数之后的调用
main执行完毕后从main函数返回,启动函数调用C运行期的exit()函数,将返回值传递给它。之后exit()调用
ExitProcess()结束进程。
C 中的main执行完后用atexit()函数来注册程序正常终止时要调用的函数。所以main函数执行完后还执行其
他语句。