배열과 포인터의 산술 연산
432
8 asked
안녕하세요:)
연습 문제 구현 중,
swap(&arr[min_idx], &arr[i]);
이 부분을
swap(arr + min_idx, arr + i);
이렇게 구현을 해봤는데, 똑같이 작동해 확인 차 여쭤보려고 질문을 달게 되었습니다.
전에 포인터는 산술연산이 가능하지만, 배열은 산술연산이 안된다고 하셨는데요.
여기서 arr은 배열이지만 산술연산이 가능한 것은 함수로 들어오면서 arr이라는 변수명이 포인터처럼 작동하기 때문에 가능한 것이 맞나요?
감사합니다:)
Answer 1
1
배열도 산술 연산 가능합니다. 배열은 산술연산 안된다고 어느 부분에서 말씀하신 것일까요..? 😮
arr[2] 는 곧 *(arr + 2) 와도 같습니다. 즉 arr 배열의 이름은 첫번째 원소의 주소값이니까 arr + 2 는 첫번쨰 원소에서 int 공간 크기의 2칸 떨어진 곳의 주소, 즉 &arr[2] 를 의미합니다. 따라서 *(arr + 2) 는 곧 arr[2] 와도 같은 표현입니다.
0
답변 감사드립니다!
<10.4 포인터와 배열> 강의 8:35초 쯤
"배열의 이름이 포인터처럼 사용될 수 있다고 해서, 배열 이름 자체도 산술연산을 할 수 있는 것은 아니다. arr 값이 변하면 메모리를 잃어버릴 수도 있기 때문에, 배열 그 자체를 산술 연산하는 것은 불가능하다. 그러나 포인터로 바꿔준 후에 포인터 변수를 이용해 산술연산을 하는 것은 가능하다. " 라는 내용이 나오는데요.
그러면 "arr 값이 변하면 메모리를 잃어버릴 수도 있기 때문에, 배열 그 자체를 산술 연산하는 것은 불가능하다"이기 때문에, 배열 자체를 건들이지 않는다면 괜찮은 것이니, 다시 말해 "arr += 2 "와 달리 "arr + 2"은 arr 자체를 변화시키지는 않기 때문에 가능한 거 같다는 생각을 해봤는데요.
제 추측이 맞을까요?
Export template 안됨
1
30
2
완전히 똑같이 따라해도 exe파일이 안만들어져서 실행이 안됩니다.
1
57
3
main 함수에서 왜 int만 선언이 되는걸까요
1
57
2
8비트 2진수 변환시 왜 1을 더해야하나요?
1
55
2
혹시 강의를 빠르게 수강하려면 어디서부터 듣는게 좋을까요?
1
49
1
프로토타입과 함수간의 인자 불일치
1
73
2
12.12 헤더 관련 질문
1
60
2
Visual Studio Community 2026 사용 문의
1
138
2
Q. 15:30, 부호가 있는 8비트 정수 질문
1
61
2
getchar(), putchar()
1
94
3
강의자리ㅛ
1
80
2
비주얼스튜디오코드로 공부해도 상관없나요?
1
114
2
소스파일안에 여러 파일
1
76
2
F5와 F7의 차이
1
79
2
c = TWO * (a+b); 에서 a와 b는?
1
60
2
; 세미콜론을 붙이는 기준에 문의
1
70
1
Step over 기능 문의
1
53
2
2.6 강의 따옴표 출력 규칙 문의
1
76
2
int main 함수 관련 오류 문의
1
67
2
13.4 words[0]
0
61
2
11.7 함수를 구현해 봤습니다.
1
62
2
11.6 직접 strcmp와 strncmp를 구현해 보았습니다.
1
65
2
11.6 my_strcat과 my_strncat을 구현해봤습니다.
1
53
2
11.6 fit_str함수를 구현해 봤습니다.
1
54
2

