代码运行不懂,求解析

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
int a[10], i, n, max, * p;
printf("Enter n:");
scanf("%d", &n);
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
p = a;
max = a[0];
int m = 0;
while (m < n) {
if (p[m] > max) {
max = p[m];
}
m++;
}
printf("max = %d\n", max);
return 0;
}

这个是用于从输入获取n个数到数组a,然后求数组a的最大值,最后打印最大值,具体注释如下:

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main(void)
{
    int a[10], i, n, max, * p;
    printf("Enter n:");
    scanf("%d", &n); //从输入获取输入数据的个数,输入不要大于10,因为存放数据的数组a最多存放10个整数 
    
    for (i = 0; i < n; i++) {     //遍历0到n-1,以便访问数组a下标0到下标n-1的位置  
        scanf("%d", &a[i]);  //从输入依次获取整数到数组a当前下标位置 
    }
    
    p = a;
    max = a[0];  // 最大值默认为第一个数,然后与数组后面的元素值进行比价 
    int m = 0;     //从数组第一个元素开始比较,寻找最大值 
    while (m < n) {  // 遍历从数组下标0到下标n-1的所有获取的整数 
        if (p[m] > max) {  //如果当前数组元素值比最大值大,则将此数赋给最大值 
            max = p[m];
        }
        m++; //让下标变量指向数组下一个下标位置 
    }
    printf("max = %d\n", max);  // 循环结束后,则比较出最大值,打印这个最大值 
    return 0;
}

img


int main(void)
{
    int a[10], i, n, max, *p;
    printf("Enter n:");
    scanf("%d", &n);
    for (i = 0; i < n; i++) //输入n个数组元素
    {
        scanf("%d", &a[i]);
    }

    p = a;
    max = a[0];//初始化最大值
    int m = 0;
    while (m < n) //等同于for(int m=0;m<n;m++)
    {
        if (p[m] > max)//当前元素比最大值大,则更改最大值
        {
            max = p[m];
        }
        m++;
    }
    printf("max = %d\n", max);
    return 0;
}