链表与malloc的疑惑
1.奇怪点:如果我只是需要一个结点的空间为什么malloc的转换形式写成——Node=(int *)malloc(sizeof(int))
自我解答:void *malloc(unsigned int size);其作用是在内存的动态存储区中分配一个长度为size的连续空间。此函数的返回值是分配区域的起始地址,或者说,此函数是一个指针型函数,返回的指针指向该分配域的开头位置。
重点就在荧光~,malloc分配的就是一块空间,返回的就是地址的指针,所以malloc应该是指针类型的
2.奇怪点:如果我设置了一个指针A,指向了指针B,我为A分配空间的话,是否也为B分配了空间呢?
自我解答:经过一番测试之后,其实这个问题很傻,总结根源是因为对指针,malloc的内核了解并不深,不透彻
首先明确:
int *haha,*hehe; haha=&a; hehe=haha;
这段代码的意思是:把haha指向的地址,告诉了hehe,就好像一个小秘密一样,但是指针太蠢了,一次只能记住一个小秘密,所以当执行如下语句
hehe=(int*)malloc(sizeof(int));
hehe就只能记住新的秘密:malloc分配到的地址而与haha无瓜了