您的位置:首页 > 编程语言 > C语言/C++

(转)动态数组(c语言实现)

2009-11-16 14:38 316 查看
该文章转自: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;
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: