指针、数组和地址间的关系:
  数组的基地址是在内存中存储数组的起始位置,是数组中第一个元素(下标为0的地址),或者说数组名本身是一个地址。
  在访问内存方面,指针和数组几乎是相同的。
    ①指针是以地址作为值得变量
    ②数组名的值是一个特殊的固定地址,可以把它看作是常量指针。
    ③p=a;等价于p=&a[0];
    ④p=a+1;等价于&a[1];
    ⑤*(a+i)等价于a[i]

两种排序方法:

冒泡排序

#include<Stdio.h>
int main()
{
    int i,j,n=6,m,a[10],k;
    n=6;
    printf("请输入:");
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    for(i=1;i<n;i++){
        for(j=0;j<n-1;j++){
            if(a[j]>a[j+1]){
                m=a[j];
                a[j]=a[j+1];
                a[j+1]=m;
            }
            printf("j=%d",j);
            for(k=0;k<n;k++)
                printf("%4d",a[k]);
            printf("\n");            
        }            
            printf("第%d趟排序结果",i);
            for(k=0;k<n;k++)
                printf("%4d",a[k]);
            printf("\n");
    }            
    printf("排序后结果:");
    for(i=0;i<n;i++)
        printf("%4d",a[i]);
    return 0;
}

选择排序

#include<Stdio.h>
void xz(int x[],int n);
int main()
{
    int *p,i,j,a[10],k,n,temp;
    printf("Enter n:");
    scanf("%d",&n);
    for(i=0;i<n;i++)
        scanf("%d",&a[i]);
    p=a;
    xz(p,n);
    printf("After sorted:");
    for(i=0;i<n;i++){
        printf("%5d",a[i]);
    }
    return 0;
}

void xz(int x[],int n)
{
    int i,j,k,t;
    for(i=0;i<n;i++){
        k=i;
        for(j=i+1;j<n;j++)
            if(x[j]<x[i]) k=j;
        if(k!=i){
            t=x[k];
            x[k]=x[i];
            x[i]=t;            
        }
    }    
}