授業の課題で出題された問題です。
整数配列dataに対し、要素番号iの2乗をdata[i]に格納する手続きsqarrayを作成する問題で、自分は以下のようにプログラムしました。

/*
ex1401.c
*/

#include <stdio.h>

void sqarray(int data[], int size)
{
  int i;
for (i=0;i<size;i=i+1) {
printf("%d ",&data[i]);
}
}

void printIntArray(int a[], int size)
{
  int i;
for (i=0;i<size;i=i+1) {
printf("%d ",a[i]);
}
printf("\n");
}


int main(void)
{
  int data[100], n;

  printf("n=? ");
  scanf("%d", &n);

  sqarray(data, n);
  printIntArray(data, n);


return 0;
}

しかし、以下のようなエラーを表示されました。

ex1401.c: In function ‘sqarray’:
ex1401.c:11:10: warning: format ‘%d’ expects argument of type ‘int’, but argument 2 has type ‘int *’ [-Wformat=]
 printf("%d ",&data[i]);
         ~^   ~~~~~~~~
         %ls

上記の指摘では、"%d"が"%ls"のようになるということだと思い、直してみたのですが、またエラーがでました。
自分のプログラムはどのようなところがおかしいのでしょうか。