포인터

C프로그래밍/개인 공부

함수에서 인자를 포인터로 받으면 무조건 원본 변경이 될까?

포인터를 활용하면 '원본의 변경'을 할 수 있다. 라고 배운다. 하지만, 변경이 안되는 헷갈리는 부분이 있어서 글로 남긴다. #include void PointerChange(int *pointer) { pointer = pointer + 10; //주소 자체를 변경 } int main(void) { int a = 10; int *p = &a; printf("a = %d\n", a); printf("p가 가리키는 주소 = %u\n", p); PointerChange(p); printf("p가 가리키는 주소 = %u\n", p); return 0; } 변수 a = 10이고 포인터 변수 p 는 a를 가리키고 있다. PointerChange함수는 매개변수로 포인터 변수를 받고, 받은 포인터 변수를 10증가시킨..

C프로그래밍/개인 공부

C언어 - 함수의 포인터

함수 포인터 지금까지 우리는 포인터를 주로 변수를 가르키는데 사용했다. 하지만, 포인터는 함수도 가르킬 수 있다. 함수도 실행되는 주소를 가진다. 일반적인 포인터는 변수가 저장되어있는 주소를 가르키지만, 함수 포인터는 함수가 시작되는 주소를 가르킨다. 함수 포인터는 이렇게 선언한다. int (*pf)(int, int); int형이고 매개변수로 int, int를 갖는 함수 포인터 pf. 라는 뜻이다. 예를들어, sub함수를 정의하고 sub함수를 가르키는 함수포인터를 설정해보자. int sub(int, int); //함수원형 정의 int (*pf)(int, int); //함수 포인터 정의 pf = sub; //함수의 이름을 함수 포인터에 대입. 어려울 것이 없다. 여기서 눈여겨 봐야할 점은, pf = sub..

C프로그래밍/개인 공부

C언어 - 포인터의 기초

포인터 point에 er을 붙인 것이다. pointer을 직역하면 '가르키는 것'이 되는데, 변수의 주소를 가지고 있는 변수이다. 즉, int i = 4이렇게 변수에 데이터를 저장했다고 가정했을때, 포인터는 변수i가 저장되어있는 메모리상 주소를 가진다. 주소 연산자 & 그렇다면 변수의 주소를 어떻게 알 수 있을까? 주소 연산자인 &를 사용하면된다. 간단한 예제를 살펴 보자. 1 2 3 4 5 6 7 8 9 #include int main(void) { int a = 10; printf("%u", &a);//%u는 주소를 십진수로 출력 return 0; } cs 이 예제에선, 변수 a를 선언하고 10을 저장했다. 그렇다면 이 변수 a가 저장되어 있는 메모리상 주소가 있을 것이다. &는 주소 연산자로써 &a..

Jminu
'포인터' 태그의 글 목록