2011-10-08 2 views
0

제가 간 기능 문자열을 전달할 때C 문자열 처리

숯 * str을 거의 기능 헤더 숯 STR [N]과 동일 함을 알고있다.

이 작동하고 왜 내가 싶어 알고하지만 무슨 일이 둘 사이의 차이 내가 처음 "에서의 char *"는 선언이라면 =에 "거기에 문자열을 할당하는 것이 발견

문자열 작업 끈;" 이 늘

어떤 일이 뒤에 무슨 일을 말해 줄 수 일?

내가 다른 배열에 배열을 할당 할 수 있습니다 어쨌든 있나요? 같은 감사

자바

char[] one; 
char[] two={'a','b'}; 
one=two; 

답변

1
char[] one; 

구문은 잘못된 것입니다 : 당신이 기본 천천히 시작해야 추측이 설명 하나의 종이입니다. 이것은 Java가 아닙니다.

char* one; 
char two[]={'a','b'}; 
one = two; 

이 기능은 배열이 포인터로 붕괴하기 때문에 효과가 있습니다.

"char * str은 함수 헤더에서 char str [n]과 거의 같습니다."

no. 배열과 포인터는 두 가지 개념입니다. 그들은 둘 다 동일하지 않습니다.

+0

같은 메모리 위치를 가리키고있다 :) –

+0

함수 매개 변수 선언으로'char * str'과'char [n]'*은 * 동일하다. 그들은 모두'str'을 포인터로 선언합니다. (이것은 매개 변수에만 적용됩니다.) –

+0

@xjaphx : 무슨 소리 야? –

0

ArrayPointer 두 개의 서로 다른 개념입니다. http://www.cs.bu.edu/teaching/cpp/string/array-vs-ptr/

+0

개념은 CPP와 C에서 동일? 어쨌든 링크 감사합니다. – kun

+0

C++에서는 문자열 처리를위한 클래스 인'std :: string'을 사용합니다. 그러나 C 스타일 문자열을 계속 사용할 수 있습니다. C에서'string'은 타입이 아닌 개념이며'\ 0' (NULL) 문자로 끝나는 문자 배열입니다. 그것은 차이점입니다! –

+0

@xjaphx :'NULL'은 null * 포인터 * 상수이며 null 문자가 아닙니다. –

0

나는 C (및 C++)에서의 배열과 포인터 사이의 관계를 본 적이 가장 좋은 설명은 comp.lang.c FAQ의 6 장입니다. 문자열과 배열의