C语言中动态分配数组
来源:互联网 发布:綦美合 知乎 编辑:程序博客网 时间:2024/05/15 01:45
int *a;
int N;
scanf("%d", &N);
a = (int *) malloc(N * sizeof(int));
....
free(a);
这样就动态分配了数组a[N]。数组的长度N可输入确定,也可用程序中的变量确定。但要注意程序结束后要用free()将其释放,否则内存会泄漏。
#include <stdlib.h>
int main()
{
int i = 0;
int *a;
int N;
printf("Input array length: ");
scanf("%d", &N);
printf("\n");
a = (int *) malloc(N * sizeof(int));//int 可以用*a来代替
for(i = 0; i < N; i++)
{
a[i] = i + 1;
printf("%-5d", a[i]);
if ((i + 1) % 10 == 0)
printf("\n");
}
free(a);
printf("\n");
return 0;
}
这样就完成了数组a[N]的动态分配,那么多维怎么分配呢?一个道理啊!!!!!!!!!!!!
二维
#include <stdlib.h>
#include<stdio.h>
int main()
{
int nrows,ncolumns;
scanf("%d,%d",nrows,ncolumns);
区别的地方
//为数组分配行数 注意指针多了个*
int **array = malloc(nrows * sizeof(*array));//注意分配的是整形指针的数量 每行元素是个整形指针
//对每行分配数组个数(就是二维数组的列数)
for(i = 0; i < nrows; i++)
{
array[i] = (int*)malloc(ncolumns * sizeof(int));
for(l=0;l<ncolumns;l++)
{
array[i][l]=...
}
}
//付初值以及处理过程
free(array);
return 0;
}
多维一个道理 每增加一维 输入数据就要多一个 定义指针的时候就多一个* 且分配的时候也要多个* 还要多个for循环
三维
#include<stdlib.h>
#include<stdio.h>
int main()
{
int rows,colnums,num;
scanf("%d %d %d",rows,colnums,num);
int ***p=malloc(rows*sizeof(*p));
for(int i=0;i<colnums;i++)
{
p[i]=(int**)malloc(colnums*sizeof(int*));//**p
for(int j=0;j<num;j++)
{
p[i][j]=(int*)malloc(num*sizeof(int));//这里可以写成*p
for(r=0;r<num;r++)
{
p[i][j][r]=...
}
}
}
free(p);
return 0;
}
- c语言中动态分配数组
- C语言中动态分配数组
- C语言中动态分配数组
- C语言中动态分配数组
- C语言中动态分配数组
- C语言中动态分配数组(一维)
- C语言中动态分配二维数组
- C语言中二维数组动态分配内存
- C 语言动态分配数组
- C语言动态分配数组
- C语言动态分配二维数组
- C语言动态分配二维数组
- C语言二维数组动态分配
- C语言动态分配二维数组
- C语言动态分配二维数组
- 在C语言中实现动态分配二维数组
- 在C语言中实现动态分配二维数组
- C语言中动态分配数组指针的释放问题
- Android中的Drawable资源
- Android开发效率—Eclipse快捷键
- 如何使用VS创建SharePoint自定义Ribbon菜单(图文和代码)
- Jenkins+Gradle+Android+多渠道包 (一)
- cocos2dx-js学习笔记、官方tests示例
- C语言中动态分配数组
- 使用MFC的CArray自定义数据类型,编译报错的解决方法
- SQL游标详解
- stun探测过程
- 微软收购R语言开发公司 强化云计算业务
- URL 和 URI 区别
- 设置PopWindow显示在某控件之上和无法获取PopWindow高度问题解决方法
- 解决 Android SDK无法下载和更新失败的问题
- 近场 远场 概念