- 1、本文档共9页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 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)