100条经典C语言笔试题目整理

2、以下为Linux下32位C程序,请计算sizeof的值。

char str[] = "hello";
char *p    = str;
int   n    =10; 
请计算:sizeof(str)=                      sizeof(p)=                          sizeof(n)= 


sizeof与strlen的区别。1)sizeof是C语言的关键字,而strlen是函数;2)sizeof的参数类型较多,而strlen参数只能针对char型且必须以‘\0’结尾;3)数组做sizeof参数时不退化,而作为strlen参数时退化为指针(数组名传递给函数时退化为指针);4)计算时间不同,sizeof在程序编译的时候就已运行,而strlen是在函数运行时才进行运算(sizeof与初始化无关,strlen与初始化相关,参考13题);5)sizeof保证能容纳实现所建立的最大对象的字节大小,strlen测试从起始到第一个‘\0’结束,但strlen返回大小不包括0。

………………………………………………………………………………………………………………………………………………………

5、设有以下说明和定义:

typedef union{long i; int k[5];char c}DATE;
struct data {int cat;DATE cow;double dog;} too;
DATE max;
printf("%d",sizeof(struct data)+sizeof(max));
上述输出结果是———

(1)对于union存储使用公共空间,union所占空间为其中最大变量的空间;(2)结构体测占字节时要考虑字节对齐。(单独整理,见博客结构体字节对齐问题)

待续...

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值