C/C++面试题常考点(一)

求解
  1. char str[100] = "Hello World";  
  2.   
  3. sizeof(str) = ?;  
  4.   
  5. strlen(str) = ?  
  6.   
  7. char str1[100] = "Hello\0World";  
  8.   
  9. strlen(str1) = ?  

考点:

     sizeof函数和strlen函数。sizeof函数求str字符串在内存中所占的内存空间,而str定义的时候在内存中申请了100个字节的空间,故sizeof(str) = 100strlen函数求字符串的实际长度,字符串中到第一个'\0'的长度,故strlen(str) = 11(不含'\0')strlen(str1) = 5

注意:strlen函数求得的字符串长度不包含'\0'

      strlen函数求得的长度是从字符串开始到第一个'\0'的长度

 

求解

  1. char str[] = "Hello";  
  2.   
  3. sizeof(str) = ?;  
  4.   
  5. strlen(str) = ?;  

考点:字符串。

      以为字符串以'\0'结尾,会在内存中多分配一个字节保存'\0',而数组没指出大小,编译器会根据后面的"Hello\0"判断[]中的值,则sizeof(str) = 6strlen求得的长度不包括'\0',则strlen(str) = 5

 

求解

  1. void *p0;  
  2.   
  3. int *p1;  
  4.   
  5. char *p2;  
  6.   
  7. long *p3;  
  8.   
  9. float *p4;  
  10.   
  11. double *p5;  
  12.   
  13. sizeof(p0) = ?;  
  14.   
  15. sizeof(p1) = ?;  
  16.   
  17. sizeof(p2) = ?;  
  18.   
  19. sizeof(p3) = ?;  
  20.   
  21. sizeof(p4) = ?;  
  22.   
  23. sizeof(p5) = ?;  

考点:指针长度。

      因为任何类型的指针在内存中都占4个字节,所以sizeof(p0)sizeof(p1)sizeof(p2)sizeof(p3)sizeof(p4)sizeof(p5)都等于4


求解

  1. char *str = "Hello";  
  2.   
  3. sizeof(str) = ?;  
  4.   
  5. strlen(str) = ?;  
  6.   
  7. str在内存中占?个字节  

考点:指针、字符串。

      str是指针,则sizeof(str) = 4str指向的字符长度为5,则strlen(str) = 5;字符串以'\0'结尾,故str在内存中实际存储为"Hello\0",则str在内存中占6个字节。

 

找错

  1. void test1()  
  2. {  
  3.  char stri10];  
  4.  char *str1 = "0123456789";  
  5.  strcpy( str, str1 );  
  6. }  

考点:数组越界。

      str111个字节(字符串以'\0'结尾),而str数组只有10个字节的内存空间。str数组不能存放下str1字符串,会造成数组越界。

  

找错

  1. char s1[10] = "Hello";  
  2.   
  3. char s2[20];  
  4.   
  5. s2 = s1;  

考点:数组赋值。

    因为s2是一个字符数组,不能用另一个字符数组以等号直接赋值,应该使用strcmp赋值,即strcpy(s2,s1)

 

求解

  1. string str;  
  2.   
  3. cin >> str;           (输入Hello World)   
  4.   
  5. cout << str << endl;  

考点:stringcin机制。

     (1)、读取并忽略开头所有的空白字符(如空格、换行符、制表符等)(2)、读取字符直至再次遇到空白字符,读取终止。 则strcout输出的是Hello

  

求解

  1. void Test(char str[100])  
  2.   
  3. {  
  4.   
  5.     cout << sizeof(str) << endl;  
  6.   
  7. }  

考点:指针。

      在函数Test(char str[100])中,str作为形参,在函数体内,数组名将失去其本身的内涵,仅仅是一个指针。同时str在函数体内,也失去了其常量特性,可以做自增、自减、可以被修改。因为str仅仅只是一个指针,则sizeof(str) = 4

 

求解

写出布尔变量与零值比较的表达式

 

考点:布尔变量。

      假设布尔变量名字为flag,它与零值比较的标准if语句如下:

  1. if(flag)           //表示flag为真  
  2.   
  3.  if(!flag)          //表示flag为假  

10 求解

写出const的两个用途

 

考点:const

     (1) 可以定义const常量

     (2) const可以修饰函数的参数、返回值,甚至函数的定义体。被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值