社区
C语言
帖子详情
哪位介绍一下malloc语句的用法
thinice
2002-05-05 01:29:10
malloc的作用,即什么地方要通道
还有,好象常和sizeof连用,再请教一下sizeof有什么作用?
请高手赐教
...全文
344
13
打赏
收藏
哪位介绍一下malloc语句的用法
malloc的作用,即什么地方要通道 还有,好象常和sizeof连用,再请教一下sizeof有什么作用? 请高手赐教
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
WarFather
2002-05-05
打赏
举报
回复
malloc的返回值是无类型的。
hahey
2002-05-05
打赏
举报
回复
blactte(想认识我吗?在靠近一点!) 说的:
int a;
int length=sizeof(a);//length=4
好象错了 length 应该 =2 才对?
int 占用2个字节啊
我说错了没有? 朋友们
jamesfangjing
2002-05-05
打赏
举报
回复
还要补充一点就是,你要转换一下它返回的指针类型!
p=(char *)malloc(sizeof(int));
这就是一个标准的例子!
jamesfangjing
2002-05-05
打赏
举报
回复
malloc是用来分配内存空间,有的时候不知道要分配的大小,才用sizeof()否则,滞借用就可以了。
挺拔的劲松
2002-05-05
打赏
举报
回复
http://www.csdn.net/expert/topic/693/693017.xml?temp=.3462183
earthharp
2002-05-05
打赏
举报
回复
wgjmail(笑面佛) and blactte(想认识我吗?在靠近一点!)
they are right
jieshen
2002-05-05
打赏
举报
回复
是类型的强制转换。
leizhengdeng
2002-05-05
打赏
举报
回复
the return type of malloc function is void *, therefore you should convert it to the same type as the pointer variable.
thinice
2002-05-05
打赏
举报
回复
malloc前面那个括号里是什么参数
corrs
2002-05-05
打赏
举报
回复
我觉得楼上的朋友解释得还算清楚的,你如果还不明白,应该相信看一下讲基础知识的书籍,好象谭浩强书里的介绍就蛮详细的!
zhangyuan
2002-05-05
打赏
举报
回复
能不能解释的详细一点,我也在此吃亏好久了
笑面佛_正版
2002-05-05
打赏
举报
回复
sizeof()是得到数据长度的,它的C中的定义和int,if等等一样是作为保留字语名来算的
struct student* t;
t=(struct student*)malloc(sizeof(struct student));
malloc需要的参数为分配空间的大小,返回的指针为void型的,需要显式的转换
blactte
2002-05-05
打赏
举报
回复
sizeof()返回的是一个对象在内存中占用的字节的大小
例如
int a;
int length=sizeof(a);//length=4
malloc()实在内存中开辟一块内存,返回一个void指针指向该内存快
例如
void *p;
p=malloc(n,sizeof(a));//意思是在内存中开辟n个大小为sizeof(a)字节的内存块
malloc
函数及
用法
分配内存空间函数
malloc
:在内存的动态存储区中分配一块长度为"size"字节的连续区域。函数的返回值为该区域的首地址。
linux c内存分配函数
介绍
介绍
linux c中的基本内存分配函数, 比如
malloc
, k
malloc
, zalloc等等
编译原理实验报告 语法分析 语义分析 词法分析 详细的源程序
附录c 编译程序实验 实验目的:用c语言对一个简单语言的子集编制一个一遍扫描的编译程序,以加深对编译原理的理解,掌握编译程序的实现方法和技术。 语法分析 C2.1 实验目的 编制一个递归下降分析程序,实现对词法分析程序所提供的单词序列的语法检查和结构分析. C2.2 实验要求 利用C语言编制递归下降分析程序,并对简单语言进行语法分析. C2.2.1待分析的简单语言的语法 实验目的 通过上机实习,加深对语法制导翻译原理的理解,掌握将语法分析所识别的语法成分变换为中间代码的语义翻译方法. 实验要求 采用递归下降语法制导翻译法,对算术表达式、赋值
语句
进行语义分析并生成四元式序列。 实验的输入和输出 输入是语法分析提供的正确的单词串,输出为三地址指令形式的四元式序列。 例如:对于
语句
串 begin a:=2+3*4;x:=(a+b)/c end# 输出的三地址指令如下: (1) t1=3*4 (2) t2=2+t1 (3) a=t2 (4) t3=a+b (5) t4=t3/c (6) x=t4 算法思想 1设置语义过程 (1) emit(char *result,char *arg1,char *op,char *ag2) 该函数功能是生成一个三地址
语句
送到四元式表中。 四元式表的结构如下: struct {char result[8]; char ag1[8]; char op[8]; char ag2[8]; }quad[20]; (2)char *newtemp() 该函数回送一个新的临时变量名,临时变量名产生的顺序为T1,T2,…. Char *newtemp(void) { char *p; char m[8]; p=(char *)
malloc
(8); k++; itoa(k,m,10); strcpy(p+1,m); p[0]=’t’; return(p); } (2)主程序示意图如图c.10所示。 (2) 函数lrparser在原来语法分析的基础上插入相应的语义动作:将输入串翻译成四元式序列。在实验中我们只对表达式、赋值
语句
进行翻译。 语义分析程序的C语言程序框架 int lrparser() { int schain=0; kk=0; if(syn=1) { 读下一个单词符号; schain=yucu; /调用
语句
串分析函数进行分析/ if(syn=6) { 读下一个单词符号; if(syn=0 && (kk==0)) 输出(“success”); } else { if(kk!=1 ) 输出 ‘缺end’ 错误;kk=1;} else{输出’begin’错误;kk=1;} } return(schain); int yucu() { int schain=0; schain=statement();/调用
语句
分析函数进行分析/ while(syn=26) {读下一个单词符号; schain=statement(); /调用
语句
分析函数进行分析/ } return(schain); } int statement() { char tt[8],eplace[8]; int schain=0; {switch(syn) {case 10: strcpy(tt,token); scanner(); if(syn=18) {读下一个单词符号; strcpy(eplace,expression()); emit(tt,eplace,””,””); schain=0; } else {输出’缺少赋值号’的错误;kk=1; } return(schain); break; } } char *expression(void) {char *tp,*ep2,*eplace,*tt; tp=(char *)
malloc
(12);/分配空间/ ep2=(char *)
malloc
(12); eplace=(char *)
malloc
(12); tt =(char )
malloc
(12); strcpy(eplace,term ());/调用term分析产生表达式计算的第一项eplace/ while(syn=13 or 14) { 操作符 tt= ‘+’或者‘—’; 读下一个单词符号; strcpy(ep2,term());/调用term分析产生表达式计算的第二项ep2/ strcpy(tp,newtemp());/调用newtemp产生临时变量tp存储计算结果/ emit(tp,eplace,tt,ep2);/生成四元式送入四元式表/ strcpy(eplace,tp); } return(eplace); } char *term(void)/仿照函数expression编写/ char *factor(void) {char *fplace; fplace=(char *)
malloc
(12); strcpy(fplace, “ ”); if(syn=10) {strcpy(fplace,,token);/将标识符token的值赋给fplace/ 读下一个单词符号; } else if(syn=11) {itoa(sum,fplace,10); 读下一个单词符号; } else if (syn=27) {读下一个单词符号; fplace=expression();/调用expression分析返回表达式的值/ if(syn=28) 读下一个单词符号; else{输出‘}’错误;kk=1; } } else{输出‘(’错误;kk=1; } return(fplace); }
C语言动态内存分配函数解析
引言:对于指针,正确的分配动态内存是十分重要的,本文将着重阐述动态内存分配函数
malloc
,calloc,realloc以及memset的
用法
。 一、对于
malloc
,在终端输入 #:man
malloc
可以知道函数原型是: Void *calloc(size_t size) ,包含在库函数 stdlib.h中,作用是在内存的堆区分配一个大小为size的连续空间,如果分配内存成功,函数返回新分配内存的首地址,否则,返回NULL,注意:鉴于上述这点,一般在写程序需要判断分配内存是否成功,如下程序
语句
: int *p; p=(int *)
malloc
(sizeof(i
经典编程900例(C语言)
经典编程900例(C语言) 从零开始到高级 适合基础
C语言
70,024
社区成员
243,263
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章