본문 바로가기
C

포인터 연습 예제1

by KWONE 2024. 6. 3.
#include <stdio.h>
int main(void)
{
	int i = 10;
	int* pi = &i;
	printf("i = %d, pi = %p\n", i, pi);
	(*pi)++;
	printf("i = %d, pi = %p\n", i, pi);
	printf("i = %d, pi = %p\n", i, pi);
	*pi++;
	printf("i = %d, pi = %p\n", i, pi);
	return 0;
}

포인터 연산 정리 

위 예제에서는 (*pi)++ 가 사용되었으므로 pi가 가리키고 있는 주소인 i의 값인 10에 1을 더한다.

따라서 두번쨰 printf에서는 11로 값이 출력된다.

*pi++에서는 가리키는 주소를 찾아 주소를 1 증가 시킨다. 3-4번째 출력을 비교해보면 확인할 수 있다.

 

#include <stdio.h>
void CountIncrement1(int n); void CountIncrement2(int* n); int main(void)
{
	// 값에 의한 전달
	// 주소에 의한 전달
	int a = 10;
	printf("a의 초기값 : %d\n", a);
	CountIncrement1(a);
	printf("CountIncrement1 함수 실행 후 a의 값 : %d\n", a); 
	CountIncrement2(&a);
	printf("CountIncrement2 함수 실행 후 a의 값 : %d\n", a); 
	return 0;
}
void CountIncrement1(int n) {
	n++;
}
void CountIncrement2(int* n) {
	(*n)++; //간접 참조 연산자 이용 하여 n값을 하나 증가하시오. 
}

#include <stdio.h>
int main(void)
{
	int a[] = { 10, 20, 30, 40, 50 };
	int i;
	int* p = a;
	printf("1. 배열명 a를 이용한 주소 표현 \n");
	for (i = 0; i < 5; i++)
		printf("a[%d]의 주소 %p\n", i, a+i);
	printf("2 포인터 p를 이용한 배열 주소 표현 \n");
	for (i = 0; i < 5; i++)
		printf("a[%d]의 주소 %p\n", i, p+i);
	printf("3 포인터 p와 *를 이용한 배열 값 표현 \n");
	for (i = 0; i < 5; i++)
		printf("a[%d] = %d\n", i, *(p+i));
	printf("4 포인터 p를 이용한 배열 값 표현 \n");
	for (i = 0; i < 5; i++)
		printf("p[%d] = %d\n", i, p[i]);
	printf("5 배열의 요소를 이용한 배열 값 표현 \n");
	for (i = 0; i < 5; i++)
		printf("a[%d] = %d\n", i, a[i]);
	return 0;
}
#include <stdio.h>
#define N_DATA 10
void array_copy(int* a, int* b, int size);
void array_print(int* a, int size);
int main(void)
{
	int A[N_DATA] = { 1, 2, 3 };
	int B[N_DATA] = { 0 };
	printf("A[] = ");
	array_print(A, N_DATA);
	array_copy(A, B, N_DATA);
	printf("B[] = ");
	array_print(B, N_DATA);
	return 0;
}
//인덱스 표기법 사용
void array_copy(int *a, int *b, int size)
{
	int i;
	for (i = 0;i < size;i++) {
		*b++ = *a++;
	}

}
void array_print(int *a, int size)
{
	int j;
	for (j = 0;j < size;j++) {

		printf(" % 2d", *a++);
	}
	printf("\n");
}

'C' 카테고리의 다른 글

백준 10818번 최대,최소 문제에서의 VLA와 동적할당 이슈  (1) 2024.06.20
포인터 연습 예제2  (0) 2024.06.04
문자열 배열 연습 4  (0) 2024.05.29
문자열 배열 연습 3  (0) 2024.05.29
문자열 배열 연습2  (0) 2024.05.28