A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© CesC 中级黑马   /  2015-7-25 22:53  /  859 人查看  /  1 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

13.char a[10];
strlen(a)为什么等于15?


  #include "stdio.h"
  #include "string.h"

  void main()
  {
   char aa[10];
   printf("%d",strlen(aa));

  }

  答案:sizeof()和初不初始化,没有关系;
  strlen()和初始化有关。
--------------------------------------------

14.char (*str)[20];/*str是一个数组指针,即指向数组的指针.*/
  char *str[20];/*str是一个指针数组,其元素为指针型数据.*/
---------------------------------------------

15.
  #include
  #include
  #include
  #include
  #include
  #include

  typedef struct  AA
  {
         int b1:5;
         int b2:2;
  }AA;

  void main()
  {
   AA aa;
   char cc[100];
   strcpy(cc,"0123456789abcdefghijklmnopqrstuvwxyz");
   memcpy(&aa,cc,sizeof(AA));
   cout << aa.b1 <<endl;
   cout << aa.b2 <<endl;
  }
输出结果是多少?

  答案:-16和1

  首先sizeof(AA)的大小为4,b1和b2分别占5bit和2bit.经过strcpy和memcpy后,aa的4个字节所存放的值是: 0,1,2,3的ASC码,即00110000,00110001,00110010,00110011所以,最后一步:显示的是这4个字节的前5位,和之后的2位分别为:10000,和01,因为int是有正负之分</endl;</endl;

1 个回复

倒序浏览
大神你是第几届的??!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马