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;
|
|