您的位置:首页 > 编程语言 > C语言/C++

C++面试题

2012-02-15 01:02 225 查看
1.虚函数定义的限制

类的成员函数不能定义为虚函数,类的成员函数中静态成员函数和构造函数也不能定义为虚函数,但可以将析构函数定义为虚函数。

2.运算符优先级及结合性的理解

口诀:括号成员第一((),[ ], ->, ·),单目运算你别急(!, ~, ++, --, -, (类型), *, &,sizeof),乘除三,加减四,移位 五,关系六,等与不等第七,位与异或及位或,三分天下八九十(&, ^ , | ),逻辑与或有高低,条件高于赋值,逗号运算最低。

结合性:除单目运算符,条件运算符,赋值运算符为自右至左(右结合),其余均为自左至右(左结合)。

左(右)结合均是针对变量而言的,如a - b + c;根据结合性,b先与减号结合,执行a - b的运算,再执行加c的运算。从整个式子(宏观上)看也可理解为从左至右依次运算。

3.void指针

①void指针可以指向任意类型的数据

②任意类型的指针可以直接赋值给void指针而无需强制转换

例如:void* p;

int* a;

p = a;

但反过来将 a= p 则错误

③根据ANSI标准,不能对void指针进行算法操作,例如下面则错误

void* p;

p++; //错误

p += 1; //错误

原因:ANSI标准之所以这样认为,是因为它坚持,进行算法操作的指针必须是确定知道其所指向数据类型大小的

④如果函数参数可以是任意类型的指针,那么应声明参数为void*

例如:void *memcpy(void *dest, const void *src, size_t n);

4.关于sizeof和strlen

char str[] = “Hello” ; //sizeof(str) = 6

char *p = str ; //sizeof(p) = 4

int n = 10; //sizeof(n) = 4

void *p = malloc( 100 ); //sizeof(p) = 4

void Func ( char str[100])

{

请计算

sizeof(str) = 4 ;

}

sizeof是求所占空间,strlen是求长度

例如:char str[100] = "Hello World!";

则 sizeof(str) = 100 ;

strlen(str) = 12;到/0则停止计数

5.关于各种指针的定义

1,一个整形数: int a;

2,一个指向整形数的指针: int *a;

3,一个指向指针的指针,它指向的指针指向一个整形数: int **a;

4,一个有10个整形数的数组: int a[10];

5,一个有10个指针的数组,每个指针指向一个整形数: int *a[10];

6,一个指向有10个整形数的数组的指针: int (*a)[10];

7,一个指向指针的指针,被指向的指针指向一个有10个整形数的数组: int (**a)[10];

8,一个指向数组的指针,该数组有10个整形指针: int *(*a)[10];

9,一个指向函数的指针,该函数有一个整形参数并返回一个整形数: int (*a)(int);

10,一个有10个指针的数组,每个指针指向一个函数,该函数有一个整形参数并返回一个整形数: int (*a[10])(int);

11,一个函数的指针,指向的函数的类型是有两个整形参数并且返回一个函数指针的函数,返回的函数指针指向有一个整形参数且返回整形数的函数: int (*(*a)(int,int))(int);

6.关于强制类型的考察

(int) a、&a、(int)&a、(int&)a的区别:

7.static的考察

待续。。。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: