回 帖 发 新 帖 刷新版面

主题:malloc到底是做什么用的

dengll23告诉我如果head=linklist*malloc(sizeof(linklist))那么就不可以写head=null,因为这样的话分配的空间该找不到了,可是我的同学告诉我如果写了malloc就代表可以向指针中存结点了,如果不写的话就代表只是 指针,所以我想问一下大家head和malloc 到底怎么用啊,谢谢啦

回复列表 (共7个回复)

沙发

malloc()是用来分配内存的,并用指针来存放地址.
比如:
char *p;
p=(char *)malloc(sizeof(char));

此处用malloc()来分配一个char大小的内存空间,并用指针p指向这个内存空间.

板凳

真的很感谢你,你比我们老师讲的明白多了,但是我还想问一下head到底是怎么一回事啊

3 楼

NULL是空指针。
你head = NULL之后,head指向的内存就不是你刚才指的地方了。也就变成没有意义的指针了。
指针释放以后,倒是有很多人喜欢将其赋为NULL。

4 楼

谢谢楼上的,那是不是不可以象下面这样写程序啊
linklist *head;
char ch;
head->data=ch;
将head中装上结点是不是不可以呢

5 楼

linklist *head;  //定义链表指针,但并没有在内存中为它开辟空间所以它是暂时变量不能保存,链表中的元素是无所谓存储位置的主要靠指针,你如果不分配空间,那么指针指向哪里?
char ch;
head->data=ch;

以上你代码是正确的,但没有意义

head=linklist*malloc(sizeof(linklist))  把分配的空间符值给head(头结点),头结点有了自己的空间,由于是linklist类型所以可以指向下一个结点.

6 楼

head只是一个变量名,任何符合变量命名规则的字符串可以替代head的,只是我们用我们比较熟悉的字符串(单词)表示'相似'意义的变量,也就是我们一看到head第一反应就应该是指向头节点的指针.仅仅这样而已..

简单点说,head也就那么回事.  哈哈~~  加油吧~~

7 楼

大家说的很对啊,malloc函数在语言书上可以查到,malloc函数返回一个指针,为新开辟空间的地址,通过指针对内存调用,通常最后用free函数释放空间,数据结构里经常这么用,还有remalloc函数,也是类似的,是增加空间的.

我来回复

您尚未登录,请登录后再回复。点此登录或注册