该文章转自:http://hi.baidu.com/rainday163/blog/item/6105bff591b0dd20bc3109e4.html
我们知道,数组的大小是固定的,但是今天我要告诉大家的是:数组的大小可以由我们设定!
好了,废话少说,咱们还是开始吧!
下面就是代码了:
#include <stdio.h>
#include <stdlib.h>
main()
{
int i,n,*p;
printf("Input n:");
scanf("%d",&n);
if(n<=0)//排除无意义的n值
{
printf("Error!\n");
return 0;//跳出操作
}
p=(int *)calloc(n,sizeof(int));//开辟空间
if(!p)//开辟空间不成功则返回出错信息
{
printf("Error!");
return 0;
}
for(i=0;i<n;i++)//输入操作
{
printf("Input the %dth number:\t",i+1);
scanf("%d",p+i);
}
printf("The number you input :\n");
for(i=0;i<n;i++)//输出操作
printf("%d\t",*(p+i));
printf("\n");
free(p);//释放空间
return 0;
}
呵呵,此代码在vc 6.0下测试通过……^_^
相信大家都能看懂的吧,不足指出还望高手指点………^_^
三维动态数组的代码
void Func(int *ipSource, int iHigh, int iRow, int iColumn)
{
int ***ipTemp, i, j, k;
ipTemp = (int ***)malloc(iHigh*sizeof(int**));
for(i=0; i<iHigh; ++i)
{
ipTemp[i] = (int **)malloc(iRow*sizeof(int*));
}
for(i=0; i<iHigh; ++i)
{
for(j=0; j<iRow; ++j)
ipTemp[i][j] = ipSource + i*iRow*iColumn+j*iColumn;
}
for(i=0; i<iHigh; ++i)
{
for(j=0; j<iRow; ++j)
for(k=0; k<iColumn; ++k)
ipTemp[i][j][k] += 1;
}
for(i=0; i<iHigh; ++i)
{
free(ipTemp[i]);
}
free(ipTemp);
return;
}