상세 컨텐츠

본문 제목

c언어:포인터

코딩 기록

by jii 2022. 12. 10. 18:17

본문

  • 포인터: 주소를 가지고 있는 변수



  • &: 변수의 주소를 계산하는 연산자
  • *: 간접 참조 연산자, 포인터가 가리키는 값을 가져오는 연산자

(*p = 20; 포인터로 변수 값 변경 가능)

 

ex)

int i = 10;

int *p;

p = &i;

 

  • 포인터가 아무것도 가리키고 있지 않는 경우에는 NULL로 초기화

 

 

#include <stdio.h>
int main(){
	int i = 3000;
	int* p = NULL;
	p = &i;
	printf("i = %d\n", i); 
	printf("&i = %u\n\n", &i); 
	printf("p = %u\n", p); 
	printf("*p = %d\n", *p); 
	return 0;
}

결과

#include <stdio.h>
int main(){
	int i = 10;
	int* pi = &i;
	printf("i = %d, pi = %p\n", i, pi);
	(*pi)++; //pi 위치의 값 증가
	printf("i = %d, pi = %p\n", i, pi);
	
	*pi++;//pi 위치에서 값 가져온 후 증가
	printf("i = %d, pi = %p\n", i, pi);
	return 0;
}

결과

값에 의한 호출

:main에서 swap(a,b)

함수선언->  void swap(int x, int y){}

//값을 복사

 

vs

 

참조에 의한 호출

:main에서 swap(&a,&b)

함수선언-> void swap(int *px, int *py){}

//주소를 전달

 

  • 포인터와 배열
#include <stdio.h>
int main(){
	int a[] = { 10, 20, 30, 40, 50 };
	printf("a = % u\n", a);//포인터와 같은 역할 ->주소
	printf("a + 1 = % u\n", a + 1);
	printf(" * a = % d\n", *a);//값
	printf(" * (a + 1) = % d\n", *(a + 1));
	return 0;
}

결과

'코딩 기록' 카테고리의 다른 글

java : 2일차  (0) 2023.01.05
java : 1일차  (0) 2023.01.02
c언어:배열 문제 풀이  (0) 2022.12.09
c언어: 배열  (0) 2022.12.09
순환(recursion):재귀호출  (0) 2022.12.09

관련글 더보기

댓글 영역