3个回答
展开全部
自己做的仅供参考:
可能有不对的好久不看了,快忘光了!呵呵
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的用法搞清楚,书中有我就不具体说了)
呵呵!上面都个人见解,仅供参考!
可能有不对的好久不看了,快忘光了!呵呵
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的用法搞清楚,书中有我就不具体说了)
呵呵!上面都个人见解,仅供参考!
展开全部
*p++,++和**同优先级,结合方向自右向左,作用是先取p的值后使地址移到下一位。
(*p)++表示p所指向的元素值加1,如果p=a,则(*p)++相关a[0]++,若a[0]=3则(*p)++即(a[0]++)的值为4了。
(*p)++表示p所指向的元素值加1,如果p=a,则(*p)++相关a[0]++,若a[0]=3则(*p)++即(a[0]++)的值为4了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这两题都好难啊
第九题选A。pt是个行指针,pt+1等于&t[1],再对它[2]就等于t[3]了,出界。
第十题选D。ptr等于数字2的地址,++以后就指向数字3的地址,取a1成员就是3.
第九题选A。pt是个行指针,pt+1等于&t[1],再对它[2]就等于t[3]了,出界。
第十题选D。ptr等于数字2的地址,++以后就指向数字3的地址,取a1成员就是3.
更多追问追答
追问
第10题初始化是不题目写错了?不是a[0] a[1]这个顺序嘛
它是a1 a2 a0这个顺序
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询