主题:malloc到底是做什么用的
蓝莓公主
[专家分:30] 发布于 2007-04-05 15:02:00
dengll23告诉我如果head=linklist*malloc(sizeof(linklist))那么就不可以写head=null,因为这样的话分配的空间该找不到了,可是我的同学告诉我如果写了malloc就代表可以向指针中存结点了,如果不写的话就代表只是 指针,所以我想问一下大家head和malloc 到底怎么用啊,谢谢啦
回复列表 (共7个回复)
沙发
Zero1 [专家分:710] 发布于 2007-04-05 21:39:00
malloc()是用来分配内存的,并用指针来存放地址.
比如:
char *p;
p=(char *)malloc(sizeof(char));
此处用malloc()来分配一个char大小的内存空间,并用指针p指向这个内存空间.
板凳
蓝莓公主 [专家分:30] 发布于 2007-04-05 22:24:00
真的很感谢你,你比我们老师讲的明白多了,但是我还想问一下head到底是怎么一回事啊
3 楼
gqhonesty [专家分:2920] 发布于 2007-04-06 11:26:00
NULL是空指针。
你head = NULL之后,head指向的内存就不是你刚才指的地方了。也就变成没有意义的指针了。
指针释放以后,倒是有很多人喜欢将其赋为NULL。
4 楼
蓝莓公主 [专家分:30] 发布于 2007-04-06 11:35:00
谢谢楼上的,那是不是不可以象下面这样写程序啊
linklist *head;
char ch;
head->data=ch;
将head中装上结点是不是不可以呢
5 楼
wallace123 [专家分:30] 发布于 2007-04-06 11:46:00
linklist *head; //定义链表指针,但并没有在内存中为它开辟空间所以它是暂时变量不能保存,链表中的元素是无所谓存储位置的主要靠指针,你如果不分配空间,那么指针指向哪里?
char ch;
head->data=ch;
以上你代码是正确的,但没有意义
head=linklist*malloc(sizeof(linklist)) 把分配的空间符值给head(头结点),头结点有了自己的空间,由于是linklist类型所以可以指向下一个结点.
6 楼
Zero1 [专家分:710] 发布于 2007-04-06 12:33:00
head只是一个变量名,任何符合变量命名规则的字符串可以替代head的,只是我们用我们比较熟悉的字符串(单词)表示'相似'意义的变量,也就是我们一看到head第一反应就应该是指向头节点的指针.仅仅这样而已..
简单点说,head也就那么回事. 哈哈~~ 加油吧~~
7 楼
byf1986 [专家分:20] 发布于 2007-04-23 14:48:00
大家说的很对啊,malloc函数在语言书上可以查到,malloc函数返回一个指针,为新开辟空间的地址,通过指针对内存调用,通常最后用free函数释放空间,数据结构里经常这么用,还有remalloc函数,也是类似的,是增加空间的.
我来回复