动态数组创建总结
有些人喜欢c和c++混编,但我个人感觉c++很强大,很多东西用起来很方便,但我目前为止用的还是纯c:
下面分c和c++来总结一下动态数组的创建:
c:
一维动态数组的创建
#include<stdio.h>
#include<stdlib.h>
#define ROW 5
#define COL 4
main(){
int i;
int **arr;
arr=(int **)malloc(ROW*sizeof(int*));
for(i=0;i<ROW;++i)
arr[i]=(int*)malloc(COL*sizeof(int));
printf("%d\n",arr[ROW-1][COL-1]);
for(i=0;i<ROW;++i)
free(arr[i]);
free(arr);
}
使用calloc申请内存时,内存会清0,而malloc并不进行这项工作,所以打印数组元素时得到的随机值。
数组清零时要用memset(shuzu,0,4*(num+1));不能再用memset(shuzu,0,sizeof(shuzu));否则出错
c++:
#include<iostream>
using namespace std;
int main(int i,int j)
{
while(cin>>num)
{
int* shuzu=new int[num+1];
memset(shuzu,0,4*(num+1)); //由于shuzu申请的是动态内存,用sizeof计算长度会出错
//这里要用 类型大小*个数,这里为 int*(num+1) , int大小为4
delete shuzu;
}
return 0;
}
剩下的后续再更新。。。