#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 |