<div style="display:inline-block;"> <div style="font-family:'나눔고딕', NanumGothic, '돋움', Dotum;">안녕하세요! </div> <div style="font-family:'나눔고딕', NanumGothic, '돋움', Dotum;">"프로그래밍 면접 이렇게 준비한다." 책을 보면서 공부하고 있는 컴퓨터공학과 4학년 학생입니다.</div> <div style="font-family:'나눔고딕', NanumGothic, '돋움', Dotum;"><br></div> <div style="font-family:'나눔고딕', NanumGothic, '돋움', Dotum;">문자열에 들어있는 단어들의 순서를 반대로 출력해주는 함수를 작성하기 위해 </div> <div style="font-family:'나눔고딕', NanumGothic, '돋움', Dotum;">함수의 파라미터로 문자열(char *)을 받도록 작성한뒤 </div> <div style="font-family:'나눔고딕', NanumGothic, '돋움', Dotum;">실제로 char형 포인터 변수를 넘겨서 값을 바꾸려고 시도하였으나 에러가 발생하였습니다.</div> <div style="font-family:'나눔고딕', NanumGothic, '돋움', Dotum;"><br></div> <div style="font-family:'나눔고딕', NanumGothic, '돋움', Dotum;">저는 문자형 포인터(char *)를 함수에 넘겼기 때문에 당연히 함수 안에서 그 포인터가 가리키는 곳의 값, </div> <div style="font-family:'나눔고딕', NanumGothic, '돋움', Dotum;">즉 문자열 값을 바꿀 수 있다고 생각했는데 바뀌지 않더군요..</div> <div style="font-family:'나눔고딕', NanumGothic, '돋움', Dotum;"><br></div> <div style="font-family:'나눔고딕', NanumGothic, '돋움', Dotum;">그래서 아래처럼 테스트 코드를 만들고 실행해보았습니다.</div> <div style="font-family:'나눔고딕', NanumGothic, '돋움', Dotum;"><br></div> <div style="font-family:'나눔고딕', NanumGothic, '돋움', Dotum;"> <div style="display:inline-block;"> <div> <div style="display:inline;width:auto;"><a target="_blank" href="http://prev.kr/app/ColorScripter" style="color:#010101;text-decoration:none;" target="_blank">Colored By <b><font style="color:#00aacc;">Color Scripter</font></b>™</a></div></div> <div> <table style="font-size:13px;font-family:NanumGothicCoding, '나눔고딕코딩', '나눔고딕', NanumGothic, '돋움', Dotum;white-space:nowrap;" border="0" cellpadding="0" cellspacing="0"><tbody><tr style="margin:0px;padding:0px;"><td style="color:#888888;margin:0px;padding:0px 3px;text-align:right;border-right-width:3px;border-right-style:solid;border-right-color:#000099;"> <div>1</div> <div>2</div> <div>3</div> <div>4</div> <div>5</div> <div>6</div> <div>7</div> <div>8</div> <div>9</div> <div>10</div> <div>11</div> <div>12</div> <div>13</div> <div>14</div> <div>15</div> <div>16</div> <div>17</div></td> <td style="margin:0px;padding:0px 3px;color:#010101;" nowrap> <div style="background-color:#f7f7f7;"><font color="#00AACC">#include</font> <stdio.h></div> <div> </div> <div style="background-color:#f7f7f7;"><font color="#00AACC">void</font> func(<font color="#00AACC">char</font> * str)</div> <div>{</div> <div style="background-color:#f7f7f7;"> str[0] = <font color="#993333">'A'</font>;</div> <div>}</div> <div style="background-color:#f7f7f7;"> </div> <div><font color="#00AACC">int</font> main()</div> <div style="background-color:#f7f7f7;">{</div> <div> <font color="#00AACC">char</font> str1[] = <font color="#993333">"Hello World!\n"</font>;</div> <div style="background-color:#f7f7f7;"> <font color="#00AACC">char</font> * str2 = <font color="#993333">"Hello World!\n"</font>;</div> <div> </div> <div style="background-color:#f7f7f7;"> func( str1 );</div> <div> func( str2 ); <font color="#66CC33">// 에러</font></div> <div style="background-color:#f7f7f7;"> </div> <div> <font color="#00AACC">return</font> 0;</div> <div style="background-color:#f7f7f7;">}</div></td></tr></tbody></table><br></div> <div>main 함수 안에서 두개의 문자열을 만들었습니다.</div> <div>하는 10번째 줄 처럼 배열의 형태로 선언하였고,</div> <div>또 하나는 11번째 줄 처럼 char * 형으로 선언하였습니다.</div> <div><br></div> <div>그리고 그 두 문자열을 같은 함수에 넘겨보았습니다.</div> <div><br></div> <div>그랬더니 13번째 줄처럼 배열의 형태인 str1[] 을 넘겼을때는 함수안에서 값을 변경할 수 있었지만</div> <div>14번째 줄처럼 char * 타입을 넘겼을때는 문자열의 값을 변경하려고 하자 에러가 발생하였습니다.</div> <div><br></div> <div>C언어에서 문자열은 곧 문자의 배열이고, 배열도 문자열의 처음 위치를 가리키는 포인터이기 때문에 </div> <div>두 표현이 같다고 생각했는데 이런데서 차이점이 있었네요..</div> <div><br></div> <div>두 표현이 정확히 어떤 차이가 있는지 궁금합니다.</div></div></div></div>
댓글 분란 또는 분쟁 때문에 전체 댓글이 블라인드 처리되었습니다.