반응형
- _21_교재
- 수업023_포인터와배열.cpp
#include <stdio.h>
int main(void) {
int i;
int a[] = { 10, 20, 30, 40, 50, 60, 70, 80 , 90, 100 };
//40바이트
int* ptr = a + 3;
//배열로 3칸 / int라서 13 / 배열로는 3번
printf("%d\n", *ptr); //40
printf("%d\n", *ptr + 1); //40 + 1
printf("%p\n", ptr); //x13
printf("%p\n", ptr + 1); //x17
printf("%p\n", ptr - 3); //x1
printf("%p\n", ptr + 1 - 3); // x5
printf("%d\n", *ptr + 1); //41
printf("%d\n", *(ptr + 1)); //x5의 값. 50
printf("%d\n", *ptr + 1 - 3); //38
printf("%d\n", *(ptr + 1) - 3); //50 - 3 = 47
return 0;
}

- 수업023_포인터와배열02.cpp
#include <stdio.h>
int main(void) {
int a[4] = {10, 20, 30}; //10, 20, 30 0
int *p = a; // p는 arr[0] 의주소 //p = x1
printf("a[0]=%d, a[1]=%d, a[2]=%d, a[3]=%d\n", a[0], a[1], a[2], a[3]);
p++; // p는 arr[1] 의 주소 //x5
printf("a[0]=%d, a[1]=%d, a[2]=%d, a[3]=%d\n", a[0], a[1], a[2], a[3]);
*p++ = 100; // p는 20을 100으로 변경후 arr[2]의 주소로 이동
//연산자가 3개.
//우선순위 | 1* | 3 ++ | 2=
//10, 100, 30, 0 // p=> x9
printf("a[0]=%d, a[1]=%d, a[2]=%d, a[3]=%d\n", a[0], a[1], a[2], a[3]);
*++p = 200; // p는 arr[3]의주소로이동후 arr[3]을 200으로변경
//우선순위 // ++ , * , = // x13의 값에 200저장
//10, 100,30,200
printf("a[0]=%d, a[1]=%d, a[2]=%d, a[3]=%d\n", a[0], a[1], a[2], a[3]);
return 0;
}
- _21_문제
- 문제023_포인터와배열.cpp
#include <stdio.h>
int main(void) {
int i;
int a[] = { 10, 20, 30, 40, 50, 60, 70, 80 , 90, 100 };
int* ptr = a + 3; //x13
for (i = 0; i < 5; i++) {
printf("%d ", *(ptr + i) - 3); //37, 47,57,67,77
}
return 0;
}
- 문제023_포인터와배열02.cpp
#include <stdio.h>
int main(void) {
int i;
int a[] = {1, 2, 4, 8};
int* p = a; //x1
p[1] = 3; // 1, 3, 4, 8
a[1] = 4; // 1, 4, 4, 8
p[2] = 5; // 1, 4, 5, 8
// 1 4 5 8
//8, 10
printf("%d %d \n", a[1] + p[1], a[2] + p[2]);
return 0;
}
- 문제023_포인터와배열03.cpp
#include <stdio.h>
int main(void) {
int a[4] = {10, 20, 30}; //10,20,30,0
int *p = a; //x1
p++; //x5
*p++ = 100; //10,100,30,0 // x9
*++p = 200; //x13 //10,100,30,200
printf("a[0]=%d, a[1]=%d, a[2]=%d, a[3]=%d\n", a[0], a[1], a[2], a[3]);
return 0;
}
- 문제023_포인터와배열04.cpp
#include <stdio.h>
int main(void) {
int arr[] = {8, 5, 3, 1, 2, 7, 9};
int *p = arr + 2, a = 0, b = 0;
//p = x9
a = *++p; //x13의 값을 a에 넣어라. //a = 1
b = (*p)++; //b = 1, p => x17
printf("%d, %d\n", a, b); //1
return 0;
}
- 문제023_포인터와배열05.cpp
#include <stdio.h>
int main(void) {
int a[4] = {1, 2, 3}; //1 , 2 , 3 , 0
int*p = a; //x1
p++; // x5
*p++ = 10; //1, 10, 30, 0 //p = x9
*p += 10; //1,10,13,0
printf("%d, %d, %d\n", a[0], a[1], a[2]); //1,10,13
return 0;
}
- 문제023_포인터와배열06.cpp
반응형
'코딩 > C언어' 카테고리의 다른 글
| 수업024_포인터와이차배열 (11) | 2025.07.09 |
|---|---|
| 포인터 와 배열 문제 (6~10) (2) | 2025.07.09 |
| 수업022_포인터와문자열 ~ 수업022_포인터와문자열03, 문제022_포인터와문자열 ~ 문제022_포인터와문자열03 (1~5) (1) | 2025.07.04 |
| 수업021_포인터 ~ 수업021_포인터07 , 문제021_포인터 ~ 문제021_포인터04(1~3) (0) | 2025.07.03 |
| 수업014_함수 ~ 수업015_함수와배열02 , 문제014_함수 ~ 문제015_함수와배열(1~3) (1) | 2025.07.03 |