能力值:
( LV2,RANK:10 )
|
-
-
2 楼
貌似不可以的,曾经也是想动态分配来着
|
能力值:
( LV8,RANK:120 )
|
-
-
3 楼
可以
malloc
int i;
int num = 50;
int *ptd;
ptd = (int*)malloc(num * sizeof(int));
这段代码请求50个int类型的空间,并把ptd指向该空间所在位置
注意!ptd是作为指向一个int类型值的指针声明的,而不是指向50个int类型值的数据块的指针。
记住!数组的名字是它第一个元素的地址。因此,如果您令ptd指向一个内存块的第一个元素,就可以像数组名一样使用它。
for(i = 0; i < num; i++)
{
ptd[i] = i;
printf("ptd[%d] = %d\n",i,ptd[i]);
}
记住!使用完毕后请释放该块内存。
free(ptd);
头文件需要引入
#include <stdlib.h>
上面这段程序里面那个num = 50;其实就是一个变量
可以在程序运行时获得。所以这样就实现了动态创建数组。
你可以将程序改写成
int num;
scanf(&num);
来动态创建一个数组
|
能力值:
( LV12,RANK:320 )
|
-
-
4 楼
如楼上所写,在堆空间中申请
|
能力值:
( LV2,RANK:10 )
|
-
-
5 楼
新手来学习的
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
的确这样就好了,c里面用malloc哪一些函数,c++的话直接new。
不过这样也有限制。就是你只能申请一次啊,如果要分别申请多次而又想用同一个指针的话怎么办呢?
|
能力值:
( LV2,RANK:10 )
|
-
-
7 楼
当然有了,三楼正解
|
能力值:
( LV2,RANK:10 )
|
-
-
8 楼
新手来学习滴 3楼的回答真的不错!3楼我顶一个、、、原来你不是一个传说。呵呵
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
3L的回答应该算是很确切的咯。
|
能力值:
( LV2,RANK:10 )
|
-
-
10 楼
刚好可以看懂
|
能力值:
( LV2,RANK:10 )
|
-
-
11 楼
基本上来说,原理简单,对编译器来说却是灾难。试想假设设置多个在栈中局部变量,由于不知道确切的大小,各个局部变量指令地址动态给出,如何编译?直到运行时都有可能不知道确切的大小,编译器如何设计?除非全部放进堆中,c语言短小精焊,很难做到这一点,效率也很低,只能说c编译器设计者是高瞻远瞩的。
|
能力值:
( LV2,RANK:10 )
|
-
-
12 楼
|
|
|