함수의 인자로 배열을 넘길때 포인터 말고 []도 같은 의미인가요?
종달
[])
질문 제목 : 함수의 인자로 배열을 넘길때 포인터 말고 []도 같은 의미인가요?질문 요약 :예를들면 exp라는 1차원 배열을 선언하고서 어떤 함수로 그 배열을 인자로 전달하고자 할때
함수 정의를
void infix_to_postfix(char exp[])
{~}
이렇게 정의했더라구요.. 책에서..
메인에서 exp를 보니깐
infix_to_postfix((2+3)*4+9);
이렇게 string이던데 이것도 배열의 일부니깐 exp[]는 그럼 배열의 첫번째 포인터를 말하는 건가요?질문 내용 : void 함수명 (char* 배열명) == void 함수명 (char 배열명[]) ??
-
MyWay
제가C를 공부할때 잘못 듣고 썼나봅니다..
같네요.... -
연연두
으음.. 전 아직도 void infix_to_postfix(char exp[])이 이해가 안되는군요.
char* exp 와 같은 인자값을 의미한다면 어째서 char&를 인자에 대입할때 오류가나는지 의문입니다.. -
찬솔나라
문자열 상수를 전달할 수 있는 포인터는 const char * 로 선언해주어
내용을 바꾸지 않는다는 것을 분명히 해주는 것이 좋습니다.
char * 는 내용을 바꾼다는 강력한 의지를 나타냅니다. -
꽃은별
전혀 아니에요... 함수의 인자로 배열을 통채로 넘겨줄 수 없어요.
달랑 주소만 전달됩니다.
함수인자 char exp[] 에서 exp 는 배열명과 같은 상수가 아닌 변수입니다.
char *exp 와 완벽하게 같아요.
배열 형태의 인자는 허용되었다가 표준으로 자리 잡힌 형태입니다. -
꽃내
배열을 통으로 복사해서 넘기느냐
첫 주소만 넘기느냐의 차이가아닐까요? -
푸른잎
함수원형에서만은 *, []끼리 서로 바꿀수 잇씁니다.
-
착히
아 답변 감사합니다 ^^
-
은솜
string은 문자열 즉 문자의 배열입니다. 배열의 일부가 아닙니다.
-
보예
void infix_to_postfix(char exp[])
는
void infix_to_postfix(char *exp)
와 같습니다.