指针怎样从函数中带回返回值?
本帖最后由 364904690 于 2015-5-16 18:03 编辑为什么调用max_min_value函数后,指向最大值的指针b和指向最小值的指针c不能带出返回值呢?/*****以指针为参数,调用函数,从数组中找出最大值 与最小值*****/
#include <stdio.h>
int main()
{
int a={32,85,32,59,96,75,58,98,39,108};
int *p,*max,*min;
voidmax_min_value(int *t,int *b,int *c);
p=max=min=a;
max_min_value(p,max,min);
printf("max=%d,min=%d\n",*max,*min);
}
voidmax_min_value(int *t,int *b,int *c)//查找最大值与最小值
{
int i;
for(i=0;i<10;i++,t++)
{
if(*t>*b)
b=t;
if(*t<*c)
c=t;
}
}
本帖最后由 小人 于 2015-5-16 18:46 编辑
#include <stdio.h>
voidmax_min_value(int t[], int *b, int *c);
int main()
{
int a = { 32, 85, 32, 59, 96, 75, 58, 98, 39, 108 };
int max, min;
max_min_value(a, &max, &min);
printf("max=%d,min=%d\n", max, min);
return 0;
}
voidmax_min_value(int t[], int *b, int *c)//查找最大值与最小值
{
*b = t;
*c = t;
int i = 0;
for (i = 0; i<10; i++)
{
if (t>*b)
{
*b = t;
}
if (t<*c)
{
*c = t;
}
}
}
既然问题已经解决那我来领个鱼币,顺便说一下,求助提问时采用悬赏方式{:5_97:} 还有么? #include <stdio.h>
int main()
{
voidmax_min_value(int *t,int *b,int *c, int n);
int a={32,85,32,59,96,75,58,98,39,108};
int max = 0, min = 0;
max_min_value(a, &max, &min, sizeof(a)/4);
printf("max = %d,min = %d\n", max, min);
}
voidmax_min_value(int *from,int *max,int *min, int n)//查找最大值与最小值
{
int i = 0;
for (; i<n - 1; i++)
{
if (from <= from)
{
*max = from;
}
else
{
*min = from;
}
}
}
这段代码可以运行得通,你的*t代表的是数组中的第一个元素,根本没有变化,而且b=t或者c=t改变的是b所指向的变量,而不是改变b所指向变量的内容。 还可以这样// ConsoleApplication2.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include <stdio.h>
int _tmain(int argc, _TCHAR* argv[])
{
/*****以指针为参数,调用函数,从数组中找出最大值 与最小值*****/
int a = { 32, 85, 32, 59, 96, 75, 58, 98, 39, 108 };
int *p, *max, *min;
p = max = min = a;
voidmax_min_value(int **t, int **b, int **c);
max_min_value(&p, &max, &min);
printf("max=%d,min=%d\n", *max, *min);
getchar();
return 0;
}
voidmax_min_value(int **t, int **b, int **c)//查找最大值与最小值
{
int i;
for (i = 0; i<10; i++, (*t)++)
{
if (**t>**b)
*b = *t;
if (**t < **c)
*c = *t;
}
}这个是函数调用时参数传递的问题,C语言是值传递的方式传参,所以call max_min_value的时候只是将原来的p max min 复制一份成为 t b c 你对 t b c的任何操作都不会改变原来的额 p max min 既然问题已经解决那我来领个鱼币,顺便说一下,求助提问时采用悬赏方式 想问一下楼主这是什么字体
页:
[1]