C语言一维数组的输入排序输出

一维数组这里不太懂,老报错,不知道怎么改

img


#include <stdio.h>
void print(int a[],int n);
void data(int a[],int n){
int i;
for(i=0;i<n;i++)
scanf("%d",&a[i]);
}
void sort(int a[],int n){
    int i,j,t;
    int tag;
    for(i=0;i<n-1;i++){
        tag=0;
        for(j=0;j<n-i-1;j++)
        if(a[j]>a[j+1])
        {t=a[j];a[j]=a[j+1];a[j+1]=t;tag=1;
        }
        if(tag==0) break;
    }
void main(){
    int a[8];
    data(a,8);
    sort(a,6);
    print(a,7);
}
void print(int a[],int n){
int j;
for(j=0;j<n;j++)
printf("%d",&a[j]);
printf("\n");
}

}

报什么错