Genkai117 发表于 2020-6-2 15:53:43

初学者求问!

之前无编程经历,从小甲鱼c语言教程学习,想问一下如下代码:

#include <stdio.h>

int max,min;

void mxmn_valude(int array[],int n);

void main()
{
    int i,number;
    printf("输入10个数判断其最大值与最小值:\n");
    for(i=0;i<10;i++)
    {
      scanf("%d",&number);
    }
    mxmn_valude(number,10);
    printf("\nmax=%d,min=%d\n",max,min);

}
void mxmn_valude(int array[],int n)
{
    int *p,*array_end;
    array_end=array+n;
    max=min=*array;
    for(p=array+1;p<array_end;p++)
    {
      if(*p>max)
      {
            max=*p;
      }
      else if(*p<min)
      {
            min=*p;
      }
    }
}

我想求问       array_end=array+n;是什么意思?p=array+1; 呢?
谢谢大佬们

老八秘制 发表于 2020-6-2 15:55:52

1.把array和n的和赋值给array_end
2.把array加一的值赋值给p

Genkai117 发表于 2020-6-2 15:59:26

老八秘制 发表于 2020-6-2 15:55
1.把array和n的和赋值给array_end
2.把array加一的值赋值给p

为什么要把array和n的和给array_end,目的是什么?能详细说说嘛,谢谢啦

Justin1 发表于 2020-6-2 16:27:48

首先,这个程序涉及到的知识点有指针、数组、传值等。你得先学到这里。
array_end=array+n;是什么意思?
array是个数组名,数组名实际上就是数组首元素的地址,它的值是1,地址相当于&array; emmm如果你没学到那些知识点,看不懂很正常。
array+n 就是在第一个地址的基础上往后移动了n个单元地址。其实就是最后一个元素之后的地址(实际上是越界了,但编译器不会去找,因为先不说了,C语言的一个优点——保证运行效率,随着你学你会明白的)
array_end是个指针,赋值到了array+n的地址
p=array+1
很简单喽,array往后的一个地址。 通俗点讲 就是数组元素2的地址

我加了点,帮助你理解
#include <stdio.h>

int max,min;

void mxmn_valude(int array[],int n);

void main()
{
    int i,number;
    printf("输入10个数判断其最大值与最小值:\n");
    for(i=0;i<10;i++)
    {
      scanf("%d",&number);
    }
    mxmn_valude(number,10);
    printf("\nmax=%d,min=%d\n",max,min);

}
void mxmn_valude(int array[],int n)
{
    int *p,*array_end;
    array_end=array+n;
    printf("%p\n",array);
    printf("%p\n",&array);
    printf("%d\n",array);
    printf("%d\n",*array);
    max=min=*array;
    for(p=array+1;p<array_end;p++)
    {
      if(*p>max)
      {
            max=*p;
      }
      else if(*p<min)
      {
            min=*p;
      }
    }
    printf("%d\n",*array_end);
    printf("%p\n",array_end);
    printf("%p\n",&array);
    printf("%d\n",array);
}

Genkai117 发表于 2020-6-2 16:41:26

Justin1 发表于 2020-6-2 16:27
首先,这个程序涉及到的知识点有指针、数组、传值等。你得先学到这里。
array_end=array+n;是什么意思 ...

哦哦!明白了,谢谢
页: [1]
查看完整版本: 初学者求问!