C 언어 에서 포인터 변수 에 대한 구덩이

먼저 선두 결점 단일 체인 표를 초기 화 하 는 예 를 보십시오.LNode 는 결점 변수 이 고 LinkList 는 결점 포인터 변수 이 며 LNode 와 같 습 니 다*

typedef struct LNode{		//           
	int data;
	struct LNode *next; 
}LNode,*LinkList;
예 1.잘못된 방법:선두 결점 의 단일 체인 표를 초기 화 합 니 다.

void InitList(LinkList L)
{	
	L = (LinkList)malloc(sizeof(LNode));
	L->data = 3;
 L->next = NULL;
}

void Empty(LinkList L)
{
	if(NULL == L)
	{
		printf("     
"); } else if(NULL == L->next) { printf("
"); } } int main() { LNode p; p.data = 2; printf("p.data = %d
",p.data); LinkList L = NULL; InitList(L); printf("L->data = %d
",L->data); return 0; }
출력 결과
p.data = 2
링크 가 존재 하지 않 음
예 2.정확 한 방법:선두 결점 의 단일 체인 표를 초기 화 합 니 다.

void InitList(LinkList *L)
{	
	(*L) = (LinkList)malloc(sizeof(LNode));
	(*L)->data = 3;
	(*L)->next = NULL;
}

void Empty(LinkList L)
{
	if(NULL == L)
	{
		printf("     
"); } else if(NULL == L->next) { printf("
"); } } int main() { LNode p; p.data = 2; printf("p.data = %d
",p.data); LinkList L = NULL; InitList(&L); printf("L->data = %d
",L->data); return 0; }
출력 결과
p.data = 2
빈 시계
L->data = 3
왜 첫 번 째 InitList(LinkList L)함수 가 단일 링크 L 을 초기 화 할 수 없 습 니까?주소 로 전달 하 는 거 아니에요?
답:
문 제 는 L=(LinkList)malloc(sizeof(LNode)이다.
이곳 의 L 은 InitList 함수 의 형 삼,즉 국부 변수 로 함수 운행 이 끝 난 후에 존재 하지 않 습 니 다.
main 함수 의 L 포인터 변 수 는 실제 전역 변수 에 저 장 된 것 이 고 두 L 은 같은 L 이 아 닙 니 다.
예 1 에서 main 함수 의 LinkList L 은 처음에 NULL 을 가 리 켰 습 니 다.

InitList(L)가 실 행 될 때 부터 InitList 함수 에서 도 L 을 작 동 하지만 이때 의 L 은 InitList 함수 에서 의 형 삼 L 이 고 그 다음 에 도 형 삼 에 대한 조작 입 니 다.다음 그림 과 같 습 니 다.

예 1 에서 들 어 온 것 은 LinkList 변수 L 로 1 급 포인터 에 속 합 니 다.실제 포인터 변수 L 자 체 를 조작 할 수 없습니다.실제 인삼 L 의 값 을 수정 하여 L 이 새로 분 배 된 LNode 를 가리 키 기 때문에 실제 인삼 L 은 NULL 을 가리 킵 니 다.출력 결과 가'링크 가 존재 하지 않 습 니 다'이기 때 문 입 니 다.
예 2 에서 LinkList 변수의 포인터&L 이 들 어 옵 니 다.2 급 포인터 에 속 합 니 다.실제 포인터 변수 L 자 체 를 조작 하여 실제 인삼 L 의 값 을 수정 하여 L 이 새로 분 배 된 LNode,(*L)=(LinkList)malloc(sizeof(LNode)를 가리 키 도록 합 니 다.
총결산
C 언어 에서 포인터 변수 구덩이 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 C 언어 포인터 변수 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!

좋은 웹페이지 즐겨찾기