c语言怎么初始化倒三角数组

c语言如何初始化倒三角数组
我想实现的目标:
      0   1   2  3  4 
      1   2   3  4
      2   3    4
      3    4
      4
          如上图,假设我要将15个数据存储到如上的数组中,哪吗我如何定义这个数组?
        使用ARRARY[5][5]会有一半的空间被浪费。

ps:我是要用位图存储大量数据,位图的的结构最终会是如上图一样的,我想用一个大数组实现位图的分配,但是这种倒三角的数组我不知道怎嘛实现?
------解决思路----------------------
二级指针

int **ppData = new int* [n];
for(int i = 0; i < n; i++)
{
      ppData[i] = new int [n - i];
}

记得用完释放
------解决思路----------------------
这样可好:

/*
0   1   2   3   4 
1   2   3   4
2   3   4
3   4
4
*/
int main(void)
{
int i, j;
int n[5] = {5, 4, 3, 2, 1};
int **pArray = (int**)malloc(sizeof(int*)*5);
//赋值
for(i = 0; i < 5; i++)
{
pArray[i] = (int*)malloc(sizeof(int)*n[i]);
for(j = 0; j < n[i]; j++)
pArray[i][j] = i + j;
}
//打印
for(i = 0; i < 5; i++)
{
for(j = 0; j < n[i]; j++)
printf("%d  ", pArray[i][j]);
printf("\n");
}
//释放空间
for(i = 0; i < 5; i++)
free(pArray[i]);
free(pArray);
return 0;
}

------解决思路----------------------
//直接用函数模拟数组arr
int arr(int x,int y,int n) {//返回nxn倒三角数组arr[x][y]处的值,x=0..n-1,y=0..n-1
 if (x+y>=n) return -1;//右下角无数据返回-1
 return x+y;
}