700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > C语言数组用到的动态内存分配

C语言数组用到的动态内存分配

时间:2020-01-20 02:54:03

相关推荐

C语言数组用到的动态内存分配

动态内存分配

在学习数组的过程中,在输入数组时,原本想过scanf定义数组的大小再输入数组的各值,却报错。

发现原因:

1.定义数组的时必须指定数组长度

2.数组长度是在编译期就必须决定的

所以此时需要用到C语言中的动态内存分配

通过动态内存分配,则代码可以如此来实现。

#include<stdio.h>#include<stdlib.h>int main(){int *a;int i,m,n;scanf("%d",&n);a = (int*)malloc(sizeof(int)*n);for (i =0;i<n;i++)scanf("%d",(a+i));for (i = 0;i<n;i++)printf("%d\n",*(a+i));}

那么

inta = (int)malloc(n*sizeof(int));

代表什么意思呢?

int *a=(int)malloc(nsizeof(int));

表示定义一个int类型的指针变量a,并申请nsizeof(int)个字节(即4n个字节)的存储空间。

malloc是在C语言中是一个申请内存单元的函数。

函数原型:void *malloc(unsigned size);

功 能:分配size个字节的内存空间

返 回 值:成功,返回分配的内存单元的起始地址;否则返回0

malloc函数介绍

在C语言中,使用malloc函数来申请内存。函数原型如下:

#include<stdlib.h>

void *malloc(size_t size);

参数size代表需要动态申请的内存的字节数,若内存申请成功,函数返回申请到的内存的起始地址,若申请失败,返回NULL, 在使用该函数时应注意以下几点

1.只关心申请内存的大小,该函数的参数很简单,只有申请内存的大小,单位是字节

2.申请的是一块连续的内存,该函数一定是申请一块连续的区间,可能申请到内存比实际申请的大,但也有可能申请不到,若申请失败,则返回NULL

3.返回值类型是void*,函数的返回值是void*,不是某种具体类型的指针,可以理解成该函数只是申请内存,对在内存中存储什么类型的数据,没有要求,因此,返回值是void*,实际编程中,根据实际情况将void*转换成需要的指针类型

4.显示初始化,注意:堆区是不会自动在分配时做初始化的(包括清零),所以程序中需要显示的初始化

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。