Mr丶张 发表于 2020-12-2 23:16:58

关于指针的问题

程序总是崩溃 不知道哪里出了问题

#include <stdio.h>

int *p = NULL;

int *xiao(int arr[])
{/*
int j, *n, y;
y = arr;
for(j=0;j<10;j++)
{

if(y>arr)
{
   y=arr;
   n=&y;
}

}
return n;
*/

int i, n;


n = arr;

for(i = 0; i < 10; i++)
{
   if(n > arr) *p = arr;
}

return p;
}

int main()
{

int arr ={0,1,2,3,4,5,6,7,8,9};
int *min,*max;
min=xiao(arr);
max=da(arr);
printf("min=%d,max=%d",*min,*max);

return 0;
}

jackz007 发表于 2020-12-3 00:20:08

#include <stdio.h>

int * p = NULL                                                   ;

int * xiao(int arr[])
{
      int i , n                                                ;
      p = & arr                                             ;
      for(i = 1 ; i < 10 ; i ++) if(* p > arr) p = & arr ; // 一定要让 p 指向较小的元素,而不是为 * p 赋值,因为 p 之前并未指向有效的变量,不可以用来储存数据。
      return p                                                 ;
}

int * da(int arr[])
{
      int i , n                                                ;
      p = & arr                                             ;
      for(i = 1 ; i < 10 ; i ++) if(* p < arr) p = & arr ; // 一定要让 p 指向较大的元素,而不是为 * p 赋值,因为 p 之前并未指向有效的变量,不可以用来储存数据。
      return p                                                 ;
}

int main()
{
      int arr ={0,1,2,3,4,5,6,7,8,9}                     ;
      int * min , * max                                        ;
      min = xiao(arr)                                          ;
      max = da(arr)                                          ;
      printf("min = %d , max =%d" , * min , * max)             ;
      return 0                                                 ;
}

风过无痕1989 发表于 2020-12-3 00:50:50

#include <stdio.h>

int da(int arr[],int n)         // 以数组名作为形参,接收主调函数传递来的实参
{
        int i, max;

        max = arr;

        for (i = 0; i < 10; i++)
        {
                if (max < arr)
                        max = arr;
        }

        return max;
}

int xiao(int arr[],int n)         // 以数组名作为形参,接收主调函数传递来的实参
{
        int i, min;

        min = arr;

        for (i = 0; i < 10; i++)
        {
                if (min > arr)
                        min = arr;
        }

        return min;
}

int main()
{

        int max, min, arr = { 5,1,2,3,4,0,9,7,8,6 };
        int *p1, *p2;
        p1 = arr;                           // 将数组首地址赋给指针
        p2 = arr;                           // 将数组首地址赋给指针
        max = da(p1,10);               // 以指针作为实参
        min = xiao(p2,10);            // 以指针作为实参
       
        printf("min = %d ,max = %d \n", min, max);

        return 0;
}
页: [1]
查看完整版本: 关于指针的问题