인프런 커뮤니티 질문&답변

알타리님의 프로필 이미지
알타리

작성한 질문수

10주완성 C++ 코딩테스트 | 알고리즘 코딩테스트

C++알고리즘 교안

매개변수 값의 수정

작성

·

368

0

p.108 Array의 요소 수정하기

  1. 함수에 매개변수로 전달할 때, 배열은 왜 int &a[] 형태가 아닌 int *a 로 전달해야하나요?

  2. 배열을 매개변수로 전달할때,

    int a[] | int a[size] | int *a

    이렇게 세 가지 형태로 전달해서 수정이 가능하다면, 결국 배열은 참조로 전달 해야지만 값을 변경할 수 있는 다른 타입들과는 다르게 매개변수로 주어졌을 때 항상 값이 변할 수 밖에 없는건가요?

답변 1

1

큰돌님의 프로필 이미지
큰돌
지식공유자

안녕하세요. ㅎㅎ

1.음.. int & a[]은 왜 안되냐는 말씀이시죠? 사실 됩니다.

다음 코드처럼 하시면 됩니다. 하지만 이렇게는 잘 안 쓰입니다.

#include <bits/stdc++.h>
using namespace std; 
int a[] = {1, 2, 3};
int go(int (&a)[3]){
	a[2] = 1;
}
int main(){
	ios_base::sync_with_stdio(false);
	cin.tie(NULL); cout.tie(NULL);
	go(a); 
	cout << a[2] << '\n'; // 1
	return 0;
}

2.네 C++에서 배열은 call by value가 불가능합니다.

감사합니다.

알타리님의 프로필 이미지
알타리

작성한 질문수

질문하기