C语言中怎么使用malloc函数?

对于一般的数组,变量还有结构体,怎么用?能给出使用的格式麽?... 对于一般的数组,变量还有结构体,怎么用?能给出使用的格式麽? 展开
 我来答
程序小兵
推荐于2017-09-27 · TA获得超过710个赞
知道小有建树答主
回答量:530
采纳率:0%
帮助的人:178万
展开全部
malloc只是动态分配内存存储空间。

void *malloc(long nBytes):该函数分配了nBytes个字节,并返回了指向这块内存的指针。如果分配失败,则返回一个空指针(NULL)

例如:char *Ptr = NULL;
Ptr = (char *)malloc(100 * sizeof(char));

就是这样!当然,具体情况要具体分析以及具体解决。比如说,你定义了一个指针,在一个函数里申请了一块内存然后通过函数返回传递给这个指针,那么也许释放这块内存这项工作就应该留给其他函数了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
可鸿熙ht
2020-12-27 · TA获得超过495个赞
知道小有建树答主
回答量:495
采纳率:100%
帮助的人:12.6万
展开全部
malloc就是memory allocate动态分配内存,当无法知道内存具体位置的时候,想要绑定真正的内存空间,就需要用到动态的分配内存,今天我们就来学习下malloc这个函数吧:

我们来了解下malloc函数的使用:

首先,包含malloc的头文件:

#include <stdlib.h>
或者
#include <malloc.h>
然后,我们需要了解一下几点:

malloc函数只接受一个形参如,int *p = (int *)malloc(sizeof(int)).先来解释下这句话的含义,int* p代表一个以int类型地址为内容的指针变量,p这个变量占4个字节(某些计算机),这个p变量是静态分配的一个变量。在某些计算机的前提下,指针变量所占的大小都是一样的,无论是char* 还是long *,因为,这些指针变量里面存放的是一个8位16进制的地址,所以占四个字节,当然这些都是在某些计算机的前提下,并不是所有的都是这样的。

malloc函数会返回开辟空间的首地址,加(int *)的目的是让计算机知道,如何去划分这个开辟的空间,因为char、int 、long这些类型的字节大小是不一样的,我们知道了首地址,还要知道是以几个字节为单元。所以,这句话一共开辟了8个字节(某些计算机上),这也是为什么写sizeof(int),而不是直接写4的原因。

malloc开辟空间所返回的首地址是动态分配的。

下面我们通过一个例子来具体了解一下:

# include <stdio.h>
# include <malloc.h>
int main(void)
{
int i = 5; //分配了4个字节 静态分配
int * p = (int *)malloc(sizeof(4));//指针变量p为静态分配,malloc开辟的空间为动态分配
*p = 5; //*p 代表的就是一个int变量,指针变量p表示是一个以int类型的地址为内容的变量
printf("%d",*p);
free(p); //freep(p)表示把p所指向的内存给释放掉,p本身的内存是静态的,不能由程序员手动释放
//p本身的内存只能在p变量所在的函数运行终止时由系统自动释放
return 0;
}
# include <stdio.h>
# include <malloc.h>
void f(int * q)
{
*q = 200;
//free(q); //把q所指向的内存释放掉,不然后面在使用*p的时候会报错,因为p所指向的内容已经被释放了
}
int main(void)
{
int * p = (int *)malloc(sizeof(int)); //sizeof(int)返回值是int所占的字节数
*p = 10;
f(p); //p是int *类型
printf("%d\n", *p);
return 0;
}
有什么问题欢迎留言讨论哦。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
独思有疑
2010-07-05
知道答主
回答量:6
采纳率:0%
帮助的人:0
展开全部
先定义后使用
数组int a[10];
变量int b;b=9;等

全都是书上的东西~!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式