腾讯C++笔试题目及答案 .pdf

  1. 1、本文档共9页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

C++题:

1经计算出的结果是什么

charstr1[]=abc;

charstr2[]=abc;

constcharstr3[]=abc;

constcharstr4[]=abc;

constchar*str5=abc;

constchar*str6=abc;

char*str7=abc;

char*str8=abc;

count(str1==str2)denl;

count(str3==str4)denl;

count(str5==str6)denl;

count(str7==str8)denl;

前两行定义的str1和str2是两个普通的char型数组,所以它们在比较时就是比

较的它们的存储地址,由于是两个不同的变量,它们的存储地址肯定是不同的,

所以第一行的输出为“0。str3和str4是用const修饰的char型数组,通常编译器

是不会为const类型分配内存空间的,而是通过常量折叠的方式处理,但在这里

它们是数组类型,编译器不会复杂到把一个集合保存在他的符号表中,所以这里

强制为其分配了内存,和str1和str2一样道理,第二行的输出也是“0”。str5和

str6不管它们是否被const修饰(因为这里const在*的左面,也就是说它们是指

向常数的指针,本身不是const的,还是普通的指针,只是指向的内容是const

的),他们都指向字符串“abc”,str5和str6两次引用的都是字符串常量“abc”,

编译器不会生成这个常量的两个副本,而引用的是相同的字符串常量“abc”

0,0,1,1

2

charx[]=abcdefg;

chary[]={a,b,c,d,e,f,g};

则正确的叙述为:()?

(A)数组x和数组y等价

(B)数组x和数组y的长度相同

(C)数组x的长度小于数组y的长度

(D)数组x的长度大于数组y的长度

C

chary[]={a,b,c,d,e,f,g,\0}

3

charstr[]=Hello;

char*p=str;

intn=10;

请计算

sizeof(str)=?

sizeof(p)=?

sizeof(n)=?

voidFunc(charstr[100])

{

请计算sizeof(str)=?

}

void*p=malloc(100);

请计算

sizeof(p)=?

运算符sizeof可以计算出数组的容量

结果:

6字符1个字节一个,17个字符,数组中元素的个数+\0

4p是个指针,32位系统上指针就是个32位的值,所以等于4(4字节=32位)

432位系统上int占4个字节,所以等于4

4数组做函数参数时,其实是按指针来传递的,所以同2,sizeof(指针)=4

4同2,p是个指针,sizeof(p)=4

4说明一下程序段的问题

(A)

voidGetMemory(char*p)

{

p=(char*);

}

voidTest(void)

{

char*str=NULL;

GetMemory(str);

strcpy(str,helloworld);

printf(str);

}

//这是原来的函数,使用的是值传递方式

voidGetMemory(char*p){p=(char*)malloc(100);}

//这是正确的内存分配函数,使用的是双重指针,传递进来的是str的指针地址,

*p就是原来的str

voidGetMemory2(char**p){*p=(char*)malloc(100);}

//这是使用引用的内存分配函数

voidGetMemory3(char*p){p=(char*)malloc(100);}

voidTest(void){

char*str=null;

GetMemory(str);//该函数做的工作是p=str,p=malloc(100);和str一点关系都没

有,str=null;

//GetMemory2(str);//该函数做的工作是char**p=str,str=*p=malloc(100),内存

分配成功

//GetMemory3(str);//传递的是str的引用,函数内的p还是str,分配成功

strcpy(str,HelloWorld!);//现在可以知道,第一个函数分配内

文档评论(0)

. + 关注
官方认证
内容提供者

专注于职业教育考试,学历提升。

版权声明书
用户编号:8032132030000054
认证主体社旗县清显文具店
IP属地河南
统一社会信用代码/组织机构代码
92411327MA45REK87Q

1亿VIP精品文档

相关文档