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的整数部分。
相关文档:
http://blog.csdn.net/Ackarlix/archive/2007/08/25/1758412.aspx
Windows下C网络编程入门
C语言的学习,一般的方式是,先学C,然后是C++,最好还要有汇编语言和微机原理基础,然后才是Visual C++。这样的方式,对学习者来说,要花费很多时间和耐力。而在学校教学中,也没有时间深入学习Windows编程的实用技术了。
......
[注]:最近在做UVC描述符的编辑工具,用到很多的结构,为了方便把结构体写成bin文件,需要把结构体中填充的字节去掉,在网上搜索得到这篇文章,感觉挺好的,转过来做个纪念。
结构体(struct)的sizeof值,并不是简单的将其中各元素所占字节相加,而是要考虑到存储空间的字节对齐问题。先看下面定义的两个结构体.
struct
......
Precedence Operator Description Example Overloadable Associativity
1
::
Scope resolution operator
Class::age = 2;
no
none
2
()
()
[]
->
.
++
--
const_cast
dynamic_cast
static_cast
reinterpret_cast
typeid
Function call
Member initalization
Array access
Member access from ......
1.
运行时库的路径
指定方式:
(1)
连接选项
–libpath
(2)
环境变量
ARMLIB
优先级:
libpath
高于
ARMLIB
被指定的路径:
包含
a ......