趋势科技笔试题(无私奉献).doc
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
趋势科技笔试题
以下的代码可放在VC++6.0里面运行。题目是要求输出:TrendMicroSoftUSCN然后要求修改程序,使程序能输出以上结果.
代码如下:
#include
#include
using namespace std;
int main(int argc,char * argv[])
{
string strArr1[]={ "Trend ", "Micro ", "soft "};
string *p=new string[2];
p[0]= "US ";
p[1]= "CN ";
cout < cout < cout < for(int i=0;i cout < for(i=0;i cout < cout < } 我在VC里面调过了,sizeof(strArr1)=48. sizeof(string)=16. sizeof(p)=4(指针变量) 我不明白的是为什么sizeof(string)=16,以及string 好象是在C#里面的,怎么用到C++里面了.给出的答案是:for(i=0;i 改为for(i=0;i 我又调了下,应该是sizeof(p)*8 (这才对的), 给位来帮我看看呢??? ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 首先要明确sizeof 不是函数,也不是一元运算符,他是个类似宏定义的特殊关键字,sizeof();括号内在编译过程中是不被编译的,而是被替代类型,如int a=8;sizeof(a);在编译过程中,它不管a的值是什么,只是被替换成类型sizeof(int);结果为4.如果sizeof (a=6);呢,也是一样的转换成a的类型,但是要注意因为a=6是不被编译的,所以执行完 sizeof(a=6);a的值还是6,是不变的! 记住以下几个结论: 1.unsigned影响的只是最高位bit的意义(正负),数据长度不会被改变的。所以sizeof(unsigned int) == sizeof(int); 2.自定义类型的sizeof取值等同于它的类型原形。如typedef short WORD;sizeof(short) == sizeof(WORD)。 3.对函数使用sizeof,在编译阶段会被函数返回值的类型取代。如:int f1(){return 0;}; cout < 4.只要是指针,大小就是4。如:cout < 5.数组的大小是各维数的乘积*数组元素的大小。如:char a[] = "abcdef "; int b[20] = {3, 4}; char c[2][3] = { "aa ", "bb "}; cout < cout < cout < 数组a的大小在定义时未指定,编译时给它分配的空间是按照初始化的值确定的,也就是7,包括‘\0’的。 6.字符串的sizeof和strlen,用例子说明: char a[] = "abcdef "; char b[20] = "abcdef "; string s = "abcdef "; cout < cout < cout < cout < cout < cout < a[1] = '\0 '; cout < cout < 所以你的问题就解决的差不多了,sizeof(string)=16如yi-0220所说, 给出的答案是:for(i=0;i 改为for(i=0;i 指针p指向数组,则*p就是指向数组中的成员了,成员的类型是什么,string型,ok那么sizeof(*p)为16,乘以2才是整个数组的大小 趋势科技笔试题3 2008-04-18 1、 #include class A{