C语言程序设计问题??
while(p<q)才是正确的,你要弄清楚函数调用时实参和形参的关系,既然你的函数void f(int *x,int *y),是以*x,*y作为形参的,那当然需要传送的是地址,而不是指针变量所指向的元素,建议你好好看看指针那一节还有函数参数传递的方式。
问题在你没有看懂这个程序的意思,就是把这个数组的数反过来,不考虑数值的大小!如果改成while(*p<*q),就不能完成这个函数的功能了,就这个数组而言,只是先把数组改为int a[8]={8,7,6,5,4,3,2,1};后来又改回int a[8]={1,2,3,4,5,6,7,8};对没有顺序的面言,在第一次不满足*p<*q时就跳出循环,毫无功能可言,也没有意义了!
while(p<q)p,q是指针,p存的是数组第一个元素的地址,q是最后一个元素的地址。p,q比较的是地址答案补充*p=1,*q=8; while(*p<*q);就变成死循环了
这段代码的目的是为了把数组a里面的元素顺序到过来,while(p<q)中p、q是控制指针,一个从数组的起点,一个从数组都尾部对他们的元素进行交换,之后p递增,q递减分别指向下一个元素,直到p=q的时候操作完成退出循环!(这里的p,q指的是数组的位置)答案补充改成下面的代码应该更好理解:void main(){ int a[8]={1,2,3,4,5,6,7,8}; int i,m,n; m=0; n=7; while(m<n) { f(&a[m],&a[n]);m++;n--; for(i=0;i<8;i++) printf("%d,",a[i]); } printf("\n");}
这题不是比较数值的大小的,他写的(p<q)是这样的:你创建的数组a[8]他在内存中就会开辟一段空间存放这8个值,每个值都有自己的空间,但是这8个值的空间是连在一起的,p就是a[0]的地址q就是a[7]的地址,p<q做循环是说要你从第一个地址一直走到最后一个地址,走每一个位置的时候做一次输出,它先进去后出来,所以会把这8个值反过来全部输出如果你改成*p就是说把p里的值取出来,这个时候就真的成了比较两个值的大小答案补充比如我定义:int *p = &a 这个时候*只代表说明p是个指针*p是把a里面的值取出来,假如a是4,那么*p就为4,*p不是指针如果你想输出a的地址可以这样写&a或者p都是可以的
答:我建议你去--天下网吧联盟 这里面都是网吧业主和网管交流的论坛,你可以自己注册一个用户进去看看,你可以和他们交流也可以寻求他们的帮助,我想没有你解决不了的问题,...详情>>
答:格式化文本区域的段落标记,用于规定文本和层的属性和位置等。比如: 新浪网 用来规定 新浪网 这三个字居中显示。 文本中心(CENTER)、左(LEFT)或右(R...详情>>