趋势科技笔试题(无私奉献).doc

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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{

相关文档
最新文档