프로그래밍 언어론에서 자료 유형을 말할 때 스칼라 타입이냐 아니냐를 따지는데 스칼라는 쉽게 말해서 한꺼번에 취급할 수 있는 데이터를 말한다. C언어에서는 10, 20, 'a', 1.0, 포인터, 구조체, 공용체(union)가 해당되지. 반면 배열은 스칼라가 아니다. 그래서 배열을 선언한다고 하면 연속된 스칼라 값들의 공간만 마련해 놓고 실제 배열에 접근할 때는 포인터를 이용해서 정해진 원소에만 접근하는 식으로 구현되어 있음. 함수를 호출할 때 인자로는 스칼라 값만 줄 수 있는데 배열을 대입할 경우 그 배열의 시작 원소 포인터가 넘어감.
ㅅㅅㅅ(125.128)2015-04-21 15:07
그리고 문자열도 스칼라가 아니다. 이름 자체가 문자 배열을 줄인 말이고 고로 배열이니 당연히 스칼라가 아니겠지? 그래서 str == "abc" 같은 비교가 불가능한 거고 대입(값 복사)도 strcpy() 같이 특수한 함수를 써서 하는 것이다.
http://andyader.blogspot.kr/2013/10/blog-post.html
포인터를 받아서
프로그래밍 언어론에서 자료 유형을 말할 때 스칼라 타입이냐 아니냐를 따지는데 스칼라는 쉽게 말해서 한꺼번에 취급할 수 있는 데이터를 말한다. C언어에서는 10, 20, 'a', 1.0, 포인터, 구조체, 공용체(union)가 해당되지. 반면 배열은 스칼라가 아니다. 그래서 배열을 선언한다고 하면 연속된 스칼라 값들의 공간만 마련해 놓고 실제 배열에 접근할 때는 포인터를 이용해서 정해진 원소에만 접근하는 식으로 구현되어 있음. 함수를 호출할 때 인자로는 스칼라 값만 줄 수 있는데 배열을 대입할 경우 그 배열의 시작 원소 포인터가 넘어감.
그리고 문자열도 스칼라가 아니다. 이름 자체가 문자 배열을 줄인 말이고 고로 배열이니 당연히 스칼라가 아니겠지? 그래서 str == "abc" 같은 비교가 불가능한 거고 대입(값 복사)도 strcpy() 같이 특수한 함수를 써서 하는 것이다.