C/C++ 笔试、面试题目大汇总
1.求下面函数的返回值(微软)
int func(x)
{
int countx = 0;
while(x)
{
countx ++;
x = x&(x-1);
}
return countx;
}
假定x = 9999。 答案:8
思路:将x转化为2进制,看含有的1的个数。
2. 什么是“引用”?申明和使用“引用”要注意哪些问题?
。引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名, 统也不给引用分配存储单元。不能建立数组的引用。
3. 将“引用”作为函数参数有哪些特点?
(1) 传递引用给函数与传递指针的效果是一样的
(2) 使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作 用引用比用一般变量传递参数的效率和所占空间都好。
(3)使用指针作为函数的参数虽然也能达到与使用引用的效果,但是,在被调函数中,且需要重复使用"*指针变量名"的形式进行运算,这很容易产生错误且程序的阅读性较差;另一方面, 在主调函数的调用点处,必须用变量的地址作为实参。而引用更容易使用,更清晰。
4. 在什么时候需要使用“常引用”?
如果既要利用引用提高程序的效率,又要保护传递给函数的数据不在函数中被改变,就应使用常引用。常引用声明方式: const 类型标识符 &引用名=目标变量名;
例1
int a ;
const int &ra=a;
ra=1; //错误
a=1; //正确
例2
string foo( );
void bar(string &s);
那么下面的表达式将是非法的:
bar(foo( ));
bar("hello world");
引用型参数应该在能被定义为const的情况下,尽量定义为const 。
5. 将“引用”作为函数返回值类型的格式、好处和需要遵守的规则?
格式:类型标识符 &函数名(形参列表及类型说明){ //函数体 }
注意事项:
(1) 不能返回局部变量的引用
(2) 不能返回函数内部new分配的内存的引用 造成memory leak。
(3) 可以返回类成员的引用,但最好是const
(4) 流操作符重载返回值申明为“引用”的作用:
流操作符<<和>>, 对于返回一个流对象,程序必须重新(拷贝)构造一个新的流对象 对于返回一个流指针则不能连续使用<<操作符
本文转自
http://blog.csdn.net/sendy888/archive/2007/07/31/1719435.aspx
1.求下面函数的返回值(微软)
int func(x)
{
int countx = 0;
while(x)
{
countx ++;
x = x&(x-1);
}
return countx;
}
假定x = 9999。 答案:8
思路:将x转化为2进制,看含有的1的个数。
2. 什么是“引用”?申明和使用“引用”要注意哪些问题?
。引用声明完毕后,相当于目标变量名有两个名称,即该目标原名称和引用名, 统也不给引用分配存储单元。不能建立数组的引用。
3. 将“引用”作为函数参数有哪些特点?
(1) 传递引用给函数与传递指针的效果是一样的
(2) 使用引用传递函数的参数,在内存中并没有产生实参的副本,它是直接对实参操作 用引用比用一般变量传递参数的效率和所占空间都好。
(3)使用指针作为函数的参数虽然也能达到与使用引用的效果,但是,在被调函数中,且需要重复使用"*指针变量名"的形式进行运算,这很容易产生错误且程序的阅读性较差;另一方面, 在主调函数的调用点处,必须用变量的地址作为实参。而引用更容易使用,更清晰。
4. 在什么时候需要使用“常引用”?
如果既要利用引用提高程序的效率,又要保护传递给函数的数据不在函数中被改变,就应使用常引用。常引用声明方式: const 类型标识符 &引用名=目标变量名;
例1
int a ;
const int &ra=a;
ra=1; //错误
a=1; //正确
例2
string foo( );
void bar(string &s);
那么下面的表达式将是非法的:
bar(foo( ));
bar("hello world");
引用型参数应该在能被定义为const的情况下,尽量定义为const 。
5. 将“引用”作为函数返回值类型的格式、好处和需要遵守的规则?
格式:类型标识符 &函数名(形参列表及类型说明){ //函数体 }
注意事项:
(1) 不能返回局部变量的引用
(2) 不能返回函数内部new分配的内存的引用 造成memory leak。
(3) 可以返回类成员的引用,但最好是const
(4) 流操作符重载返回值申明为“引用”的作用:
流操作符<<和>>, 对于返回一个流对象,程序必须重新(拷贝)构造一个新的流对象 对于返回一个流指针则不能连续使用<<操作符
本文转自
http://blog.csdn.net/sendy888/archive/2007/07/31/1719435.aspx