您的位置:首页 > 其它

动态数组的定义

2011-06-11 17:22 190 查看
C语言中动态分配数组(一维)

当初学Pascal的时候就想过这个问题:如何动态的定义及使用数组呢?记得一般用数组的时候都是先指定大小的。当时问老师,老师说是不可以的。后来又问了一位教C++的老师,他告诉我在C++里用new可以做到,一直不用C++,所以也不明白。今天在逛论坛时终于找到了C语言中的用法(看原贴):

int *a;
int N;
scanf("%d", &N);
a = (int *) malloc(N * sizeof(int));
....
free(a);

这样就动态分配了数组a
。数组的长度N可输入确定,也可用程序中的变量确定。但要注意程序结束后要用free()将其释放,否则内存会泄漏。

--------------------------------------------------------------------------------
验证一下:

#include <stdio.h>
#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));

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;
}

运行结果(VC):
=========================================================
Input array length: 100↙

1 2 3 4 5 6 7 8 9 10
11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30
31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50
51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70
71 72 73 74 75 76 77 78 79 80
81 82 83 84 85 86 87 88 89 90
91 92 93 94 95 96 97 98 99 100

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