C++面试题大全

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

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

10.下面代码有什么问题?

void test2()
{
  char string[10], str1[10];
  for(i=0; i<10;i++)
  {
     str1[i] ='a';
  }
  strcpy(string, str1);
}

数组越界

---------------------------------------------------------------------
11.下面代码有什么问题?

void test3(char* str1)
{
	char string[10];
	if(strlen(str1)<=10)
	{
		strcpy(string, str1);
	}
}

==数组越界

==strcpy拷贝的结束标志是查找字符串中的 因此如果字符串中没有遇到的话 会一直复制,直到遇到,上面的123都因此产生越界的情况

建议使用 strncpy 和 memcpy

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

12.下面代码有什么问题?

#define MAX_SRM 256
DSN get_SRM_no()
{
	static int SRM_no; //是不是这里没赋初值?
	int I;
	for(I=0;I<MAX_SRM;I++,SRM_no++)
	{
		SRM_no %= MAX_SRM;
		if(MY_SRM.state==IDLE)
		{
			break;
		}
	}
	if(I>=MAX_SRM)
		return (NULL_SRM);
	else
		return SRM_no;
}

系统会初始化static int变量为0,但该值会一直保存,所谓的不可重入...

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

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