C/C++试题
1、bool、float、指针变量与"零值"比较的if语句?
答:
bool flag; if(flag),if(!flag)
char *p; if(p==NULL),if(p!=NULL)
float x;
const float EPSILON = 1e-6;
if((x>=-EPSILON)&&(x<=EPSILON)) //(-0.000001~0.000001)
if((x<-EPSILON)&&(x>EPSILON)) //(+INFINITE~0.000001),(-0.000001~-INFINITE)
2、const有什么用途?
答:
(1)可以定义const 常量
(2)const 可以修饰函数的参数、返回值及函数的定义体。被const修饰的东西都受到强制保护,可以预防意外地被修改,能提高程序的健壮性。
3、在C++程序中调用被C编译器编译后的函数,为什么都要加extern "C" ?
答:
C++语言支持函数重载,C语言不支持函数重载。函数被C++编译器编译和被C编译器编译后生成的内部名字是不同的。假设某个函数的原型为:void foo(int x,int y);该函数被C编译器编译后的内部名字为_foo,面C++编译器则会产生像_foo_int_int之类的名字。C++提供了C连接交换指定符号 extern "C" 来解决名字匹配的问题。
4、类型转换:
double d = 100.25;
int x = d;
int *pInt = (int*)&d;
请问以下两个语句输出什么?
cout<< x <<endl;
cout<< *pInt <<endl;
答:
第一个输出 100,x取d的整数部分。
第二个结果不是100,*pInt等于d的前4个字节的数值,而不是d的整数部分。
相关文档:
栈:函数调用的时候,在栈中保存局部变量和函数参数等。当函数返回时,自动清除栈。
自由存储区:也称为堆(heap),可以看作大量的内存段。通过 new 操作符分配的内存在堆中。程序结束之前不自动清除自由存储区。需要由程序来负责释放(delete)。
1.
对指向栈上内存的指针调用delete会导致程序Crash。
2.
new 进 ......
有如下程序:
//-----------------
class A
{
public:
A()
{
printf( "base A\r\n" );
}
virtual ~A()
{
printf( "base ~A\r\n" );
}
public:
virtual void VirtualFunc()
{
printf( "base VirtualFunc\r\n" );
};
void Func()
{
printf( "base Func\r\n" );
}
void F1()
{
pr ......
第二章 c语言概述
一个简单的实例
#include <stdio.h>
int main(void)
{
int num; /*定义变量num*/
num = 1; /*给变量num赋值*/
printf("I am a simple"); /*使用printf()函数*/
& ......
网络搜集-资料
格式化输入输出函数
Turbo C2.0 标准库提供的两个控制台格式化输入、 输出函数:printf( ) 、scanf()。
printf()函数用来向标准输出设备(屏幕)写数据;
scanf() 函数用来从标准输入设备(键 ......
在大型C语言项目工程或者linux内核中我们都会经常见到两个FASTCALL和armlinkage
两个标识符(修饰符),那么它们各有什么不同呢?今天就给大家共同分享一下自己的心得.
大家都知道在标准C系中函数的形参在实际传入参数的时候会涉及到参数存放的问题,那么这些参数存放在哪里呢? 有一定理论基础的 ......