欢迎来到天天文库
浏览记录
ID:11697130
大小:45.50 KB
页数:7页
时间:2018-07-13
《c c++ c# 面试题精选_3》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、C/C++/C#面试题精选题目(11):运行下图中的C#代码,输出是什么?namespaceStringValueOrReference{classProgram{internalstaticvoidValueOrReference(Typetype){Stringresult="Thetype"+type.Name;if(type.IsValueType)Console.WriteLine(result+"isavaluetype.");elseConsole.WriteLine(result+"isarefe
2、rencetype.");}internalstaticvoidModifyString(Stringtext){text="world";}staticvoidMain(string[]args){Stringtext="hello";ValueOrReference(text.GetType());ModifyString(text);Console.WriteLine(text);}}}答案:输出两行。第一行是ThetypeStringisreferencetype.第二行是hello。类型String的定
3、义是publicsealedclassString{...},既然是class,那么String就是引用类型。在方法ModifyString里,对text赋值一个新的字符串,此时改变的不是原来text的内容,而是把text指向一个新的字符串"world"。由于参数text没有加ref或者out,出了方法之后,text还是指向原来的字符串,因此输出仍然是"hello".题目(12):运行下图中的C++代码,输出是什么?#includeclassA{private:intn1;intn2;publ
4、ic:A():n2(0),n1(n2+2){}voidPrint(){std::cout<<"n1:"<5、个随机值。初始化n2时,根据参数0对其初始化,故n2=0。题目(13):编译运行下图中的C++代码,结果是什么?(A)编译错误;(B)编译成功,运行时程序崩溃;(C)编译运行正常,输出10。请选择正确答案并分析原因。#includeclassA{private:intvalue;public:A(intn){value=n;}A(Aother){value=other.value;}voidPrint(){std::cout<6、argc,_TCHAR*argv[]){Aa=10;Ab=a;b.Print();return0;}答案:编译错误。在复制构造函数中传入的参数是A的一个实例。由于是传值,把形参拷贝到实参会调用复制构造函数。因此如果允许复制构造函数传值,那么会形成永无休止的递归并造成栈溢出。因此C++的标准不允许复制构造函数传值参数,而必须是传引用或者常量引用。在VisualStudio和GCC中,都将编译出错。题目(14):运行下图中的C++代码,输出是什么?intSizeOf(charpString[]){returnsize7、of(pString);}int_tmain(intargc,_TCHAR*argv[]){char*pString1="google";intsize1=sizeof(pString1);intsize2=sizeof(*pString1);charpString2[100]="google";intsize3=sizeof(pString2);intsize4=SizeOf(pString2);printf("%d,%d,%d,%d",size1,size2,size3,size4);return0;}答案:8、4,1,100,4。pString1是一个指针。在32位机器上,任意指针都占4个字节的空间。*pString1是字符串pString1的第一个字符。一个字符占一个字节。pString2是一个数组,sizeof(pString2)是求数组的大小。这个数组包含100个字符,因此大小是100个字节。而在函数SizeOf中,虽然传入的参数是一个字符数组,当数组作为函数的参数进行传
5、个随机值。初始化n2时,根据参数0对其初始化,故n2=0。题目(13):编译运行下图中的C++代码,结果是什么?(A)编译错误;(B)编译成功,运行时程序崩溃;(C)编译运行正常,输出10。请选择正确答案并分析原因。#includeclassA{private:intvalue;public:A(intn){value=n;}A(Aother){value=other.value;}voidPrint(){std::cout<6、argc,_TCHAR*argv[]){Aa=10;Ab=a;b.Print();return0;}答案:编译错误。在复制构造函数中传入的参数是A的一个实例。由于是传值,把形参拷贝到实参会调用复制构造函数。因此如果允许复制构造函数传值,那么会形成永无休止的递归并造成栈溢出。因此C++的标准不允许复制构造函数传值参数,而必须是传引用或者常量引用。在VisualStudio和GCC中,都将编译出错。题目(14):运行下图中的C++代码,输出是什么?intSizeOf(charpString[]){returnsize7、of(pString);}int_tmain(intargc,_TCHAR*argv[]){char*pString1="google";intsize1=sizeof(pString1);intsize2=sizeof(*pString1);charpString2[100]="google";intsize3=sizeof(pString2);intsize4=SizeOf(pString2);printf("%d,%d,%d,%d",size1,size2,size3,size4);return0;}答案:8、4,1,100,4。pString1是一个指针。在32位机器上,任意指针都占4个字节的空间。*pString1是字符串pString1的第一个字符。一个字符占一个字节。pString2是一个数组,sizeof(pString2)是求数组的大小。这个数组包含100个字符,因此大小是100个字节。而在函数SizeOf中,虽然传入的参数是一个字符数组,当数组作为函数的参数进行传
6、argc,_TCHAR*argv[]){Aa=10;Ab=a;b.Print();return0;}答案:编译错误。在复制构造函数中传入的参数是A的一个实例。由于是传值,把形参拷贝到实参会调用复制构造函数。因此如果允许复制构造函数传值,那么会形成永无休止的递归并造成栈溢出。因此C++的标准不允许复制构造函数传值参数,而必须是传引用或者常量引用。在VisualStudio和GCC中,都将编译出错。题目(14):运行下图中的C++代码,输出是什么?intSizeOf(charpString[]){returnsize
7、of(pString);}int_tmain(intargc,_TCHAR*argv[]){char*pString1="google";intsize1=sizeof(pString1);intsize2=sizeof(*pString1);charpString2[100]="google";intsize3=sizeof(pString2);intsize4=SizeOf(pString2);printf("%d,%d,%d,%d",size1,size2,size3,size4);return0;}答案:
8、4,1,100,4。pString1是一个指针。在32位机器上,任意指针都占4个字节的空间。*pString1是字符串pString1的第一个字符。一个字符占一个字节。pString2是一个数组,sizeof(pString2)是求数组的大小。这个数组包含100个字符,因此大小是100个字节。而在函数SizeOf中,虽然传入的参数是一个字符数组,当数组作为函数的参数进行传
此文档下载收益归作者所有