C++面试题大全

2011-03-19 00:28:14|?次阅读|上传:wustguangh【已有?条评论】发表评论

关键词:C/C++|来源:唯设编程网

(4)const char * const p

这种是地址及指向对象都不能修改。

---------------------------------------------------------------------

6.下面是C语言中两种if语句判断方式。请问哪种写法更好?为什么?

 int n;

 if (n == 10) // 第一种判断方式

 if (10 == n) // 第二种判断方式

如果少了个=号,编译时就会报错,减少了出错的可能行,可以检测出是否少了=

---------------------------------------------------------------------

7.下面的代码有什么问题?

void DoSomeThing(...)
{
	char* p;
	...
		p = malloc(1024);  // 分配1K的空间
	if (NULL == p)
		return;
	...
		p = realloc(p, 2048); // 空间不够,重新分配到2K
	if (NULL == p)
		return;
	...
}

A:

p = malloc(1024);     应该写成:

p = (char *) malloc(1024);

没有释放p的空间,造成内存泄漏。

---------------------------------------------------------------------

8.下面的代码有什么问题?并请给出正确的写法。

void DoSomeThing(char* p)
{
	char str[16];
	int n;
	assert(NULL != p);
	sscanf(p, "%s%d", str, n);
	if (0 == strcmp(str, "something"))
	{
		...
	}
}

A:

sscanf(p, "%s%d", str, n);  

这句该写成:

sscanf(p, "%s%d", str, &n);

---------------------------------------------------------------------

9.下面代码有什么错误?

void test1()
{
	char string[10];
	char *str1="0123456789";
	strcpy(string, str1);
}

数组越界

---------------------------------------------------------------------

发表评论0条 】
网友评论(共?条评论)..
C++面试题大全