懂C语言的朋友解释下这行代码的意思,非常感谢!!int *array ; if ((array =(...

懂C语言的朋友解释下这行代码的意思,非常感谢!!int *array ;
if ((array =(int *)malloc (5*sizeof (int )))==NULL )
刚开始学C,书上讲malloc 函数是分配内存空间,可是上面代码太复杂看不懂,大家帮帮忙!详细一些,谢谢。

意思是定义int型指针变量array。在if的判断语句中,可以分为几段,首先是(int *)malloc (5*sizeof (int )),这句的意思是给int型指针分配5倍的int型数据长度的空间,连上array=就是说给int型指针变量array分配5倍的int型数据长度的空间,而array =(int *)malloc (5*sizeof (int )这句语句的值就是array的值。所以if((array =(int *)malloc (5*sizeof (int )))==NULL )就是判断array指向是否为空,即当array==NULL时,条件为真,执行下面的语句。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-03-06
5*sizeof (int ) 这个大小为5*4=20字节 一个int 4个字节 所以malloc (5*sizeof (int ))为申请了一个大小为20字节的空间 ,malloc这个函数返回的是地址 而在他前面加了(int*)这是强制转换 就是说返回的地址为int型 array=。。这个你懂得 就是把地址赋给他 ,最后 ==null 这个就是在判断 申请空间是否成功了本回答被提问者采纳
第2个回答  2012-03-06
malloc()是分配空间,里面的5*sizeof (int )给出了要的空间大小为5个int型变量的大小,malloc返回的是void类型的指针,你需要的是int型的指针所以再进行一次类型强制转换,就是那句(int *),把得到的地址赋给array,做判断,如果这个指针为空即==null则if()满足条件,执行if体里面的代码
第3个回答  2012-03-06
前面的int*就是强制转换分配的空间的类型,其实也可以省略,因为系统默认的就是int型,然后sizeof是一个计算占内存空间的函数,在这里就是计算一个int占几个字节,然后5*就是需要五个空间,if语句就是普通的判断了,明白了不?
第4个回答  2012-03-06
分配一个能存放5个整型字节的内存空间,并用整型指针array指向内存的首地址。而if的作用是判断array指向的是否为空,若为空(即内存分配失败),则继续向下执行语句。明白了吧,呵呵。
相似回答