当初学Pascal的时候就想过这个问题:如何动态的定义及使用数组呢?记得一般用数组的时候都是先指定大小的。当时问老师,老师说是不可以的。后来又问了一位教C++的老师,他告诉我在C++里用new可以做到,一直不用C++,所以也不明白。今天在逛论坛时终于找到了C语言中的用法(看原贴): int *a; int N; scanf("%d", &N); a = (int *) malloc(N * sizeof(int)); .... free(a); 这样就动态分配了数组a[N]。数组的长度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 1011 12 13 14 15 16 17 18 19 2021 22 23 24 25 26 27 28 29 3031 32 33 34 35 36 37 38 39 4041 42 43 44 45 46 47 48 49 5051 52 53 54 55 56 57 58 59 6061 62 63 64 65 66 67 68 69 7071 72 73 74 75 76 77 78 79 8081 82 83 84 85 86 87 88 89 9091 92 93 94 95 96 97 98 99 100 =========================================================★ 帖里的一位仁兄提到了“只有c99支持可变长数组,c89,c++都不支持”即在支持C99标准的编译器里可以定义一个变量如n,通过输入或其他方法对其赋值后就可以定义一个大小为n的数组a[n]了。

评论