求解C程序设计题!

来源:百度知道 编辑:UC知道 时间:2024/06/13 23:09:11
C程序!请高手指点!!!非常感谢

第五题:
Int c[4][5],(*p)[5];
P=c,;
能够正确引用c数组元素的是?
A. p+1
B. *(p+3)
C. *(p+1)+3
D. *(p[0]+2)
标答选的D,我选的B
这里问下子啊,题目中的(*p)[5]怎么解释啊?

第六题:
#define a 121
const b=12;
enum c{a1,a2};
main()
{
printf(“%d,%d,%d”,sizeof(a), sizeof(b), sizeof(enum c));
}
标答是4,4,4。全然不明白~

第七题:
#include <string.h>
char *ss(char *s)
{ char *p,t;
p=s+1;t=*s;
while(*p){*p=*(p-1);p++;}
*(p-1)=t;
Return s;
}
main()
{ char *p,str[10]=”abcdefgh”;
p=ss(str);
printf(“%s\n”,p);
}
标答是aaaaaaaa

第5题选D是正确的,(*p)[5]指的是..定义一个指针变量P,这个指针变量p指向的是一维数组(注意是指向数组,而不是单个数,通俗点讲.他指向一群数)每个一维数组有5个元素(不知道你学这里没,如果你还没学,你是不太能看懂的)

第6题,我还没学到这里来

第7题 ,主要是解读ss函数的意思,从中可以看出p总是指向数组下一个单元的,比如输入abcdefgh那么p一上来就指向了数珠中的&b,
循环是while(*p)意思是说只要*p内的值为非0,就要一直循环,输入的abcdefgh都是非0,所以循环会持久下去,循环中的*p=*(p-1),刚才说了p一上来就指向下下一个单元,所以p-1又指向原来的单元,把原来单元内的数,赋值给p((注意p是指向下一个单元的),,所以就把a赋到了b的单元中,此时,b,已经被a 代替了,这样一直循环下去,到了c的时候,c就会被b 代替,但是由于之前&b中的内容已经被代替为a,所以&b中就是a,所以c单元内也变成a,这样一直循环,最后全是a

函数返回是返回的s,这点很重要,因为s是数组的首地址,如果你写成返回p,那就错了

5.(*p)[5]是一个指针,指向一个一维数组,只要是加括号的*p都是指针;
6.sizeof(a)不就是一个整形数的大小吗 define来定义符号常量,被定义的变量在编译时被后面的值代替;
const b=12就是定义一个不可以改变的常量;
enum c{a1,a2}就是一种数据类型,其值就是按顺序的(enum c)a1就是0,然后是1,2,3....
7.实参是str,形参是s,是数组首地址,返回值还是s,实参不跟随形参变化,所以没发生改变.

第六题的Sizeof是返回这个数所占有的字节数