10 개의 노드로 연결된 목록을 만들었습니다. 연결된 목록에서 만든 첫 번째 노드의 주소를 가져 오려고합니다. 첫 번째 노드에 대해 잘못된 주소 값이 나타납니다. 이것은 내가 작성한 코드입니다.포인터 연산
#include "singlyLinkedList.h"
#include <stddef.h> //for NULL
#include <stdlib.h> //for malloc
#include <stdio.h> //for printf
node *pNode;
void CreateLinkedList()
{
int i;
pNode = (node*)malloc(sizeof(node)); //create space for first node []
for(i=0;i<10;i++)
{
pNode->element = i; //enter value [0]
printf("Value is %d addr is %p\n",pNode->element,pNode);
pNode->nextPtr = (node*)malloc(sizeof(node)); //[0]->[]->NULL
pNode = pNode->nextPtr;
}
pNode->nextPtr=NULL;
}
//Function to get first node address
void GetFirstNodeAddress()
{
pNode = pNode-10*(sizeof(node));
printf("\n *** Value is %p",pNode);
}
int main()
{
CreateLinkedList();
GetFirstNodeAddress();
}
적어도 사소한 것은 아니지만 연결된 목록 구현에서 포인터 산술을 사용하지 마십시오. – WhozCraig