C语言 指向一维数组的指针,大数和尾数交换,小数和头数交换.结果不对,帮忙
楼上说的是一个问题,但是貌似修改后用VC++6.0依然通过不了~~
如果我没有理解错题目意思的话,楼主是想输入10个数,并扰侍且利用指针的方法,让其中最大的数和最后一个数交换,最小的数和最前面一个数交换,然后输出这个数组。
其实你写的程序还是有几个问题的:
1.直接编译会出现提示:变量i没用到。
2.如楼上所说,因为p指向的不是个字符串(或者说字符数组),所以最后并不是’\0’结尾,不能以(p!=’\0′)作为判断条皮备件,改成(p!=a+10)理论上是可以的。
3.我没看懂你的max, min, max_i, min_i的意思。用我的理解,你可能是想先扫一遍所有的数,把较大(小)的那个数存在max(min)里,较大(小)数的位置存在max_i(min_i)里,那么,max_i和min_i就应该和p的类型相同即指针型以便保存指向。
4.再来是swap过程,注意下交换顺序就ok
我修改的程序如下:
#include “stdio.h”
int main(void)
{
int a[10], max, min, *max_i, *min_i, *p=a;
min_i = a;
max_i = a+9;
for(;pa+10;p++)
scanf(“%d”,p);
max = min = a[0];
p=a;
while(p!=a+10)
{
if(max*p) {max=*p; max_i=p;}
if(min*p) {min=*p; min_i=p;}
p++;
}
p=a;
*min_i=*p; *p=min;
p=a+9;
*max_i=*p; *p=max;
for(p=a;pa+10;p++)
printf(“%d “,*p);
return(0);
}
编程序前先分析下程序,然后制定好方案,分几步走,然后定义好变量,把每个变量的意义弄燃李毁清楚。
如果以上有不正确的地方,敬请指证,大家共同进步。
用C语言如何使函数返回值为指向一维数组的指针?
这个问题一个较为妥善的方法是把数组定散伏义在主函数,再传入数组地址给自定义函数,如果你非要在自定义函数里定义也行,至于是否需要设置为static,那咐扒得看情况,因为函数退出时栈空间并不是马上被刷新,如果你能保证该栈空间在你访问前没被释放就没必要定义为static,但是保险起见定义static更好,因为你可能不知道到底该内存是不是被重新写入了数据,至于你说要返回指向指针的指针,我举个例子,int**
fun(),这个就是返回一个指向指针的指针,其指向的指针指向int型,呵呵,明冲简携白了没
c语言程序中,数值型一维数组获取原始数据的方式有哪几种?
2中。
一种 直弯渣姿接数组下标埋绝取值梁兆。例:int a[5]; a[3] = 1;
一种 指针;例:int a[5]; *(a+3) = 1;