다른 함수의 범위에있는 포인터 목록에 새 요소를 만들고 삽입 할 수 있습니까? 내가 지역 변수 n2_4
을 만들었습니다 insertEntry
함수 내에서 printf
를 호출하는 경우이 코드는, 그렇지 않으면 출력이void 함수 및 범위의 로컬 변수
내가 만들 수 포인터를 사용하는 경우 생각-1247318248 분할 오류
및 삽입입니다 작업 내가 원하는 포인터의 목록에있는 새로운 요소. 하지만 지역 변수가 제한된 가시 범위와 같은 것입니다. 아니면 내가 잘못 본거야?
또는 이러한 목적으로 void insertEntry
fuction insted 한 포인터를 반환 할 수있는 함수를 사용해야합니까? 당신이 찾고있는 무엇
// Function to insert a new entry into a linked list.
#include <stdio.h>
struct entry
{
int value;
struct entry *next;
};
void insertEntry(struct entry *insertion, struct entry *previous)
{
struct entry n2_4;
n2_4.value = 299;
struct entry *N2_4 = &n2_4;
insertion->next = previous->next; // set n2_3.next to point to whatever n2.next was pointing to
previous->next = insertion; // set n2.next to point to n2_3
insertion->value = 250;
N2_4->next = insertion->next;
insertion->next = N2_4;
}
void printPlist(struct entry *list_pointer)
{
while (list_pointer != (struct entry *) 0) {
printf("%i\n", list_pointer->value);
list_pointer = list_pointer->next;
}
printf("\n");
}
int main(void)
{
struct entry n1, n2, n3, n2_3;
struct entry *list_pointer = &n1;
n1.value = 100;
n1.next = &n2;
n2.value = 200;
n2.next = &n3;
n3.value = 300;
n3.next = (struct entry *) 0; // Mark list end with null pointer
printPlist(list_pointer);
insertEntry(&n2_3, &n2);
printPlist(list_pointer);
return 0;
}
아니요, 함수 밖에서 함수 (정적이 아닌) 지역 변수를 사용할 수 없습니다. 그들은 범위를 벗어납니다. – kaylum
@ kaylum 감사합니다! – Yellowfun