黑马程序员技术交流社区

标题: c语言面试题__指针篇(1) [打印本页]

作者: CesC    时间: 2015-7-21 22:59
标题: c语言面试题__指针篇(1)
1. char * const p;
  char const * p
  const char *p

  上述三个有什么区别?

  char * const p; //常量指针,p的值不可以修改
  char const * p;//指向常量的指针,指向的常量值不可以改
  const char *p; //和char const *p
------------------------------------------------------
2. char str1[] = "abc";
  char str2[] = "abc";

  const char str3[] = "abc";
  const char str4[] = "abc";

  const char *str5 = "abc";
  const char *str6 = "abc";

  char *str7 = "abc";
  char *str8 = "abc";

  cout << ( str1 == str2 ) << endl;
  cout << ( str3 == str4 ) << endl;
  cout << ( str5 == str6 ) << endl;

  cout << ( str7 == str8 ) << endl;

   打印结果是什么?


解答:结果是:0 0 1 1
str1,str2,str3,str4是数组变量,它们有各自的内存空间;而str5,str6,str7,str8是指针,它们指向相同的常量区域
-----------------------------------------------
3. 以下代码中的两个sizeof用法有问题吗?

  void UpperCase( char str[] ) // 将 str 中的小写字母转换成大写字母
  {
      for( size_t i=0; i<sizeof(str) sizeof(str[0]);="" ++i="" )
         if( 'a'<=str && str<='z' )
           str -= ('a'-'A' );
  }

  char str[] = "aBcDe";
  cout << "str字符长度为: " << sizeof(str)/sizeof(str[0]) << endl;
  UpperCase( str );
  cout << str << endl;

答:函数内的sizeof有问题。
根据语法,sizeof如用于数组,只能测出静态数组的大小,无法检测动态分配的或外部数组大小。
函数外的str是一个静态定义的数组,因此其大小为6,
函数内的str实际只是一个指向字符串的指针,没有任何额外的与数组相关的信息,因此sizeof作用于上只将其当指针看,一个指针为4个字节,因此返回4。

作者: wy911011    时间: 2015-7-21 23:20
收藏再说
作者: timehzy    时间: 2015-7-21 23:21
楼主你这代码是C++的啊
作者: shorfng    时间: 2015-7-22 21:26
感谢分享
作者: 普通蜗牛    时间: 2015-7-22 21:35
太棒了 亲  赞一个
作者: QQ2544    时间: 2015-8-8 09:09
收藏一下
作者: 294250051    时间: 2015-8-8 10:59
timehzy 发表于 2015-7-21 23:21
楼主你这代码是C++的啊

学习不要只学一点半点,要全面学习。说是C语言面试题,难道考官考你C++你要反驳没学过?
作者: timehzy    时间: 2015-8-18 21:05
294250051 发表于 2015-8-8 10:59
学习不要只学一点半点,要全面学习。说是C语言面试题,难道考官考你C++你要反驳没学过? ...

您说的有道理,多学点东西总没有坏处,谢谢
作者: ljk-tt    时间: 2015-8-18 21:17
感谢分享
作者: 81516741    时间: 2015-8-18 21:32
你写的太好了受益啦,谢谢
作者: xiaohu90    时间: 2015-8-19 10:37
收藏备用
作者: wangchao1992    时间: 2015-8-19 12:41
有用。。。。
作者: bianning888    时间: 2015-8-19 12:52
赞一个~!!!!收藏了
作者: tangbinbin    时间: 2015-8-19 18:24
面试有用,赞一个啦,,,
作者: gundana121    时间: 2015-8-19 18:41
赞一下下




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2