初学者求问!
之前无编程经历,从小甲鱼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; 呢?
谢谢大佬们 1.把array和n的和赋值给array_end
2.把array加一的值赋值给p 老八秘制 发表于 2020-6-2 15:55
1.把array和n的和赋值给array_end
2.把array加一的值赋值给p
为什么要把array和n的和给array_end,目的是什么?能详细说说嘛,谢谢啦 首先,这个程序涉及到的知识点有指针、数组、传值等。你得先学到这里。
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);
}
Justin1 发表于 2020-6-2 16:27
首先,这个程序涉及到的知识点有指针、数组、传值等。你得先学到这里。
array_end=array+n;是什么意思 ...
哦哦!明白了,谢谢
页:
[1]