C语言如何动态开辟数组

Python09

C语言如何动态开辟数组,第1张

头文件:#include

建议加上#include

就不需要stdlib了

具体实现:类型+指针=(类型*)calloc(数组大小,sizeof(类型));

例子:

#include

#include

//

#include

//这两个头文件任选一个就行了,上面的范围更大

int main()

{

int n,i

scanf("%d",&n)//输入数组大小

int *p=(int *)calloc(n,sizeof(int))//申请了一个长度为n的数组,用p指向首地址

for(i=0i

intmain(void)

{

int*number,n,m,i

printf("thetotalnumbersis:")

scanf("%d",&n)

printf("backm:")

scanf("%d",&m)

number=(int*)malloc(n*sizeof(int))

printf("input%dintegers:",n)

for(i=0i<ni++)

{

scanf("%d",&number[i])

}

扩展资料

动态数组,是相对于静态数组而言。静态数组的长度是预先定义好的,在整个程序中,一旦给定大小后就无法改变。而动态数组则不然,它可以随程序需要而重新指定大小。

动态数组的内存空间是从堆(heap)上分配(即动态分配)的。是通过执行代码而为其分配存储空间。当程序执行到这些语句时,才为其分配。程序员自己负责释放内存。使用动态数组的优点是可以根据用户需要,有效利用存储空间。

第一个问题

malloc()函数是申请堆内存的函数,括号内参数是内存大小,单位是字节数。函数返回的是void类型的指针,所以在赋值给int类型的指针pArr时要进行强制转换。因为malloc本来返回的就是指针,指向内存空间的首地址,用不着再前面加&。

第二个问题

i和for括号里的i是相同的,这是个for循环,循环len次,然后需要你自己输入len个值,存储在pArr[i]中。每次循环i都自加1,是不相同的。

for循环括号内第一句 i=0 是将整数 i 赋值为0;

然后第二句是判断语句,判断 i<len 是否为真,如果为真,就执行下面的scanf语句,输入值。输入完成后执行第三句 i = i+1,然后执行第二局进入下一轮判断 。若是 i<len 为假,则跳出for循环,执行下面的printf语句