众所周知的动态分配内存函数,从来没切身的用过和感受过,只会在别人的编写代码中看到的。今天做了一道题中正好用到,便小琢磨了一番。
如:
1
1 1
1 2 1
1 3 3 1
……
这个你要怎么分配存储呢,当然你可以选择传统的办法,就是选一个够大的2维数组将它存进去,没有问题。但是对一些资源紧缺的地方来用,估计就望尘莫及了,来看吧。
#define MAX 100
{ int *X[MAX] , i , j ; //定义数组指针
for ( i=0 ; i<n ; i++ )
{ X[i]=(int *)malloc(sizeof(int)*(i+1)) ; //第2个*是乘号,非指向。因为malloc的返回值是个字符,所以需要强制转换成指向数据指针。当i=0时,也就是第一行只分配两个字节的空间。i=2时,分配4个字节。//
{ for( j=0 ; j<=i ; j++ )
{ if ( j== 0 || j== i ) *(X[i] + j)=1 ;
else *(X[i] + j)= *(X[i-1] + j) + *(X[i-1] + j-1) ;
printf (“% d”,* (X[i] + j) ) ;
}
printf("/n") ;
}
}
很简单吧,因为博主也刚刚起步。