在C中的链表中打印节点的十六进制内存地址

时间:2018-09-03 11:17:17

标签: c linked-list

我有一个链接列表,该列表接受一个输入字符串,并将每个字符串存储在列表的节点中。我要打印保存每个字符串的节点的十六进制地址。

我该怎么做?我尝试打印保存单词的十六进制地址,但是我还不知道它是否仍然是节点的相同地址,这是应该打印每个节点的功能:

// print the list
void printList(ListNodePtr currentPtr)
{ 
   // if list is empty
   if (isEmpty(currentPtr)) {
      puts("List is empty.\n");
   } 
   else { 
      puts("The list is:");
      // while not the end of the list
      while (currentPtr != NULL) { 
         printf("%s %p --> ", currentPtr->data, &currentPtr);

         currentPtr = currentPtr->nextPtr;   
      } 
      puts("NULL\n");
   } 
} 

此功能可将每个单词保存在节点中

void insert(ListNodePtr *sPtr, char *value)
{ 
   ListNodePtr newPtr = malloc(sizeof(ListNode)+1); // create node

   if (newPtr != NULL) { // is space available
      newPtr->data= malloc(strlen(value));
      strcpy(newPtr->data, value);
      newPtr->nextPtr = NULL; // node does not link to another node
      ListNodePtr previousPtr = NULL;
      ListNodePtr currentPtr = *sPtr;
      // loop to find the correct location in the list       
      while (currentPtr != NULL) {
         previousPtr = currentPtr; // walk to ...               
         currentPtr = currentPtr->nextPtr; // ... next node 
      }                                          
      // insert new node at beginning of list
      if (previousPtr == NULL) { 
         newPtr->nextPtr = *sPtr;
         *sPtr = newPtr;
      } 
      else { // insert new node between previousPtr and currentPtr
         previousPtr->nextPtr = newPtr;
         newPtr->nextPtr = currentPtr;
      } 
   } 
   else {
      printf("Not inserted. No memory available.\n" );
   } 
} 

2 个答案:

答案 0 :(得分:3)

&currentPtr为您提供了一个指向变量变量的指针,这实际上不是currentPtr所指向的位置。 &currentPtr的值在循环中不会更改,因为变量本身不会更改位置。

如果要打印currentPtr指向节点本身的位置,请打印纯currentPtr

答案 1 :(得分:1)

从下面的printList的原型中,我们看到currentPtr已经是指向ListNode的指针(假设ListNodePtr是{{1 }}。

typedef

因此,您只需打印ListNode*作为节点的地址即可。

  

我尝试打印已保存单词的十六进制地址,但是我还不知道它是否仍然是节点的相同地址

仅当保存的单词是void printList(ListNodePtr currentPtr) 结构的第一个元素时,节点地址也将是保存的单词的地址。