아니. C언어에서 배열은 스칼라로 처리되지가 않아. 즉, 한꺼번에 처리할 수 없어. 선언만 가능하고 실제 배열을 건드리려면 "주소"로 접근하게 된다. 배열 이름을 쓸 경우 그 배열의 첫번째 원소의 포인터(주소값)라는 의미가 돼. int *p=a;는 p라는 포인터 변수를 선언하면서 a를 대입하는 거고, a라는 배열의 첫번째 원소의 포인터를 p에 대입한다는 의미야. 그리고 *(p+1)++; 문장은 틀렸어. 연산자 우선순위 상 ++가 *보다 우선하는데 ++은 l-value가 와야 하는데 p+1의 계산 값 "상수"가 들어왔으니깐.
ㅅㅅㅅ(125.128)2015-04-24 02:38
p[1]++;
과제도우미(175.192)2015-04-24 02:41
그럼 3번문제 아예 문제가 틀린건가요? 답은 바뀌는 요소 없다인가.,,
88(182.226)2015-04-24 02:49
"컴파일 오류로 컴파일 자체가 안된다"가 정답.
ㅅㅅㅅ(125.128)2015-04-24 02:50
http://codepad.org/OExxeLeT 를 참고할 것. 단항 연산자 중에서는 ++/--가 *보다 우선 순위가 높음. 그래서 strcpy 구현할 때 *d++ = *s++; 같은 코드를 쓰는 거임.
ㅅㅅㅅ(125.128)2015-04-24 02:51
교수님이 낸거라 ㄷ교수님이 틀릴데가 이섯군,,,
88(182.226)2015-04-24 02:52
교수도 사람이야. 교수 말이 절대적인 건 아니다. 교수를 뛰어넘는 인재가 된다는 포부가 있어야지.
ㅅㅅㅅ(125.128)2015-04-24 02:53
그리고 그 교수가 이 글을 보고 있는 것도 아닌데 교수님이라는 호칭도 왠만하면 밖에선 쓰지 마. 사회에선 그냥 교수야.
첫번째껀 배열의 첫번째주소
아니. C언어에서 배열은 스칼라로 처리되지가 않아. 즉, 한꺼번에 처리할 수 없어. 선언만 가능하고 실제 배열을 건드리려면 "주소"로 접근하게 된다. 배열 이름을 쓸 경우 그 배열의 첫번째 원소의 포인터(주소값)라는 의미가 돼. int *p=a;는 p라는 포인터 변수를 선언하면서 a를 대입하는 거고, a라는 배열의 첫번째 원소의 포인터를 p에 대입한다는 의미야. 그리고 *(p+1)++; 문장은 틀렸어. 연산자 우선순위 상 ++가 *보다 우선하는데 ++은 l-value가 와야 하는데 p+1의 계산 값 "상수"가 들어왔으니깐.
p[1]++;
그럼 3번문제 아예 문제가 틀린건가요? 답은 바뀌는 요소 없다인가.,,
"컴파일 오류로 컴파일 자체가 안된다"가 정답.
http://codepad.org/OExxeLeT
를 참고할 것. 단항 연산자 중에서는 ++/--가 *보다 우선 순위가 높음. 그래서 strcpy 구현할 때 *d++ = *s++; 같은 코드를 쓰는 거임.
교수님이 낸거라 ㄷ교수님이 틀릴데가 이섯군,,,
교수도 사람이야. 교수 말이 절대적인 건 아니다. 교수를 뛰어넘는 인재가 된다는 포부가 있어야지.
그리고 그 교수가 이 글을 보고 있는 것도 아닌데 교수님이라는 호칭도 왠만하면 밖에선 쓰지 마. 사회에선 그냥 교수야.