分清指针所占用的内存空间”和“指针指向的内存空间

怎样分清指针所占用的内存空间”和“指针指向的内存空间呢?

指针变量需要存储它所指向的内存地址,涉及到存储就需要空间,例如在64位程序中,任何一个指针变量都占用64位即8字节的内存空间。而指针所指向的内存空间,指的是根据指针变量中存储的内存地址寻址到对应位置的内存空间。这就好比房间和门牌号的关系,门牌号需要写在一个牌子上,这个牌子就是指针变量所占用的内存空间,而房间本身则是指针变量指向的内存空间。

例如创建一个1234的链表。

link * initLink(){

    link * p=NULL;//创建头指针

    link * temp = (link*)malloc(sizeof(link));//创建首元节点,可以理解为创建了一个房间并把门牌号也写上了。

    //首元节点先初始化

    temp->elem = 1;指的是temp这个指针指向的那个房间的操作

    temp->next = NULL;

    p = temp;//头指针指向首元节点现在p也是那个房间的门牌号

    //从第二个节点开始创建

    for (int i=2; i<5; i++) {

     //创建一个新节点并初始化

        link *a=(link*)malloc(sizeof(link));和temp一样创建的是一个新房间,a是他的门牌号

        a->elem=i;

        a->next=NULL;

        //将temp节点与新建立的a节点建立逻辑关系

        temp->next=a;

        //指针temp每次都指向新链表的最后一个节点,其实就是 a节点,这里写temp=a也对

        temp=temp->next;

    }

    //返回建立的节点,只返回头指针 p即可,通过头指针即可找到整个链表

    return p;

}
 

 

你可能感兴趣的:(链表)