C面试题(整理,更新中...)
1.用预处理指令#define声明一个常数,表明1年有多少秒(闰年忽略)
#define SECONDS_PER_YEAR (60*60*24*365)UL
2.写一个“标准”宏 MIN,输入两个参数并返回较小的一个
#define MIN(A,B) ( ( (A)<=(B) )?(A):(B) )
3.预处理标识#error的目的是什么?
停止编译并显示出错信息
4.用C语言编写一个死循环 ?
while(1)
{
}
5. 用变量a给出下面的定义
a) 一个整型数(An integer)---- int a;
b) 一个指向整型数的指针(A pointer to an integer-----int *a;
c) 一个指向指针的的指针,它指向的指针是指向一个整型数(A pointer to a pointer
to an integer)-------int **a;
d) 一个有10个整型数的数组(An array of 10 integers)----int a[10];
e) 一个有10个指针的数组,该指针是指向一个整型数的(An array of 10 pointers to
integers)------------int *a[10];
f) 一个指向有10个整型数数组的指针(A pointer to an array of 10 integers)---int (*a)[10]
g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数(A pointer to a fu
nction that takes an integer as an argument and returns an integer)------int (*a)(int)
h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型
数( An array of ten pointers to functions that take an integer argument and r
eturn an integer )--------int (*a[10])(int)
6.关键字static的作用是什么?
1)在函数体,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。(静态局部变量?)
2) 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。(静态外部全局变量?)
3) 在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。(静态外部函数?)
还有一个解释:
1.修释局部变量时,表示它为静态局部变量,生命周期同程序运行时间一样,只能被初始化一次
2.用于全局变量时,表示静态全局变量,变量可见范围在本文件中可见,其它不可见
3.用于函数内时,变量可见范围为函数内,其它不可见(觉得包括在第一个中)
总结:限制了变量的作用域
 
相关文档:
[DllImport("kernel32.dll",SetLastError=true)]
[return: MarshalAs( UnmanagedType.Bool )]
static extern bool AllocConsole();
[DllImport("kernel32.dll",SetLastError=true)]
[return: MarshalAs( UnmanagedType.Bool )]
static extern bool FreeConsole();
// Delegate type to be used as the Handler Routin ......
在c++调用c程序时,回调函数是不能直接使用的,以c++调用c的Gtk函数为例, 比如,在g_idle_add (init, NULL);
这句话中,一旦idle就会调用函数init(), 这个init()还会对类的成员变量进行处理。
这时,假如把init()简单地定义为类的普通成员函数就会出现类型不匹配的错误,因为g_idle_add ......
1.介绍一下STL,详细说明STL如何实现vector。
Answer:
STL (标准模版库,Standard Template Library)它由容器算法迭代器组成。
STL有以下的一些优点:
可以方便容易地实现搜索数据或对数据排序等一系列的算法;
&nb ......
C和C++语言学习总结(资料来自 <高质量C++/C 编程指南> 林锐博士 2001 年7 月24)
知识结构:
1、if,for,switch,goto
2、#define,const
3、文件拷贝的代码,动态生成内存,复合表达式,strcpy,memcpy,sizeof
4、函数参数传递,内存分配方式,内存错误表现,malloc与new区别
5、类重载、隐藏与覆盖区别,extern问题, ......
下面的例子都在Ubuntu8.04 GCC下编译的结果,有些没有给结果
编程一定要自己动手试一试!
1.定义与声明,定义要分配内存,声明只是声明在别处定义了
int a; //定义
extern int a; //声明
char str[100]
extern char str[] //ok
char * str[]
extern char str[] //error
char ......