#include
#include
using std::string; using std::cin; using std::cout; using std::endl;
int main(){
string s("Hellow World!!!");
for (auto &c : s) c =toupper(c);
cout << s << endl;
}
이 코드에서 &c가 아니라 c로 하면 안되는 이유가 뭔가요??
for(auto c: s) c = toupper(c);로 할 경우에 그냥 Hellow World!!! 그대로 출력되더라고요. 감사합니다^^
코드 짤렸는데 사진으로 보여줄수있니? - dc App
안될건없는데 ㅇㅅㅇ 단지 항목들을 하나씩 복사에서 c에 넣냐 참조로 받냐의 차이지
cout << c << endl;
그 우편함 생각해보셈 일반 자료형에서는 & 연산자가 주소를 넘겨주는거임 - dc App
주소를 알면 어떤놈이 우편함에있는걸 바꿔치기할수있지? 근데 내용물만 따로 가지고있으면 바꿔치기 못하죠? 그거임 ㅇㅇ - dc App
아 예제내용자체가 원본이 바뀌냐 안바뀌냐 확인하는 문제인데 복사한 문자열을 c에 담고 c를 변경해도 원본에는 변경이 없으니까 그대로 출력되는거고
답변 감사드립니다!!
&로 받고 수정하면 참조(즉 원본의 주소)를 받아서 가르키는값을 수정하게되는데 이렇게 되면 원본이 변경되니까 s출력하면 대문자로 변경된 문자열을 볼수있을거임 ㅇㅅㅇ
pass by value랑 pass by reference 그 차이 때문인거 맞죠??
ㅇㅇ
감사합니다!!