C语言问答题main,C语言选择题

满意答案

自己做的仅供参考:

可能有不对的好久不看了,快忘光了!呵呵

aabcd

bddbd

dbdbd

35(数组说明的一般形式为: 类型说明符 数组名 [常量表达式],……;

不能在方括号中用变量来表示元素的个数, 但是可以是符号常数或常量表达式。

例如:

#define FD 5

void main()

{

int a[3+2],b[7+FD];

……

}

是合法的。但是下述说明方式是错误的。

void main()

{

int n=5;

int a[n];

……

}

问题:const变量 & 常量

为什么下面的例子在使用一个const变量来初始化数组,ANSI C的编译器会报告一个错误呢?

const int n = 5;

int a[n];

答案与分析:

1)、这个问题讨论的是“常量”与“只读变量”的区别。常量肯定是只读的,例如5, “abc”,等,肯

定是只读的,因为因为常量是被编译器放在内存中的只读区域,当然也就不能够去修改它。而“只读变量”则

是在内存中开辟一个地方来存放它的值,只不过这个值由编译器限定不允许被修改。C语言关键字const就是用

来限定一个变量不允许被改变的修饰符(Qualifier)。上述代码中变量n被修饰为只读变量,可惜再怎么修饰

也不是常量。而ANSI C规定数组定义时维度必须是“常量”,“只读变量”也是不可以的。

2)、注意:在ANSI C中,这种写法是错误的,因为数组的大小应该是个常量,而const int n,n只是一个变

量(常量 != 不可变的变量,但在标准C++中,这样定义的是一个常量,这种写法是对的),实际上,根据编译

过程及内存分配来看,这种用法本来就应该是合理的,只是 ANSI C对数组的规定限制了它。

)

32(b超出范围了,c不该用单引号,同理d也是)

33(别忘记空格也算一个,‘\0’不算它在计算数组长度是只是一标志)

34(好像就到a[4],没有a[5],它是不合法的)

35(感觉像是选这个,不太肯定)

39(基本概念)

40(c语言的规定)

41(结构体变量所占的内存长度是各成员内存长度的和)

42(s[0].x=1 s[0].y=2 s[1].x=2 s[1].y=7)

43(共用体变量中各成员公用一段存储单元,所以任一时刻即只能有一种数据类型放在内存单元,即在任一时刻

只有一个成员有效,其他没意义。在共用体中起作用的是最后一个元素)

44(4+w*4+w=4+2*4+2=14)

45(把break和continue的用法搞清楚,书中有我就不具体说了)

呵呵!上面都个人见解,仅供参考!

00分享举报

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值