|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
之前无编程经历,从小甲鱼c语言教程学习,想问一下如下代码:
#include <stdio.h>
int max,min;
void mxmn_valude(int array[],int n);
void main()
{
int i,number[10];
printf("输入10个数判断其最大值与最小值:\n");
for(i=0;i<10;i++)
{
scanf("%d",&number[i]);
}
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; 呢?
谢谢大佬们
首先,这个程序涉及到的知识点有指针、数组、传值等。你得先学到这里。
array_end=array+n; 是什么意思?
array是个数组名,数组名实际上就是数组首元素的地址,它的值是1,地址相当于&array[0]; 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[10];
- printf("输入10个数判断其最大值与最小值:\n");
- for(i=0;i<10;i++)
- {
- scanf("%d",&number[i]);
- }
- 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[0]);
- printf("%d\n",array[0]);
- 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[9]);
- printf("%d\n",array[9]);
- }
复制代码
|
|