C语言关于字节的计算题,精心整理的关于c语言常考的笔试题

一、 想说一说关于集中数据类型的sizeof问题,这题出现率40%

sizeof就是求在内存总占多少字节的问题,最基本的char 1字节 short 2字节 int 4字节

任何的指针都是4字节 sizeof(数组名)=数组占的`大小(这里必须注意虽然数组名可作为只想数组首地址的指针,但是sizeof(数组名)求得的不是指针的大小,而是数组大小)

还有就是sizeof(结构体) sizeof(联合体)

举两个例子 struct stu {

Char a;

Int b;

Char c;

};

struct teacher {

Char a;

Char c;

Int b;

};

Sizeof (stu) =12 ;内存中这样存储 char 空空空 int char 空空空

内存4字节对其问题

Sizeof (teacher) =8 ;内存中这样存储 char char空空 int

关于联合体

Union std{

Char a[10];

Int b[3];

}

Sizeof(std)=12; 联合体公用内存,取其中所占内存最大的元素为联合体所占内存

以下为Windows NT下的32位C++程序,请计算sizeof的值

char str[] = “Hello” ;

char *p = str ;

int n = 10;

1. 请计算

sizeof (str ) = 6

sizeof ( p ) = 4

sizeof ( n ) = 4

void Func ( char str[100])

{

请计算

sizeof( str ) = 4

}

void *p = malloc( 100 );

请计算

sizeof ( p ) = 4

还有位段的问题如下

分析:

struct bit

{ int a:3;

int b:2;

int c:3;

};

int main()

{

bit s;

char *c=(char*)&s;

cout<

*c=0x99;

cout << s.a <

int a=-1;

printf("%x",a);

return 0;

}

输出为什么是

4

1

-1

-4

ffffffff

因为0x99在内存中表示为 100 11 001 , a = 001, b = 11, c = 100

当c为有符合数时, c = 100, 最高1为表示c为负数,负数在计算机用补码表示,所以c = -4;同理

b = -1;

当c为有符合数时, c = 100,即 c = 4,同理 b = 3

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值