-1
함수 정의 될한다고 가정 배열의 첫 번째 블록의 주소를 전달할 때변수/배열의 주소를 취하는 함수에서 c를 선언하면 전달하는 주소에서만 작동해야합니다. 상수와도 함께 작동하는 이유는 무엇입니까?
가int strlength (char str[]) {
int i;
for(i=1;str[i]!='\0';i++);
return i;
}
그것만 작동한다, 즉 '& STR [0]'OR 'STR'하지만 심지어 상수 문자열을 전달 작동 "AnswerPlease"라고합시다. 왜?
왜 "문자열 상수를 전달할 때도"작동하지 않아야합니까? 'strlength()'는'str'이 가리키는 데이터를 변경하려고하지 않습니까? – chux
문자열 리터럴은'char'와'int'와는 다른 특별한 것들입니다. ''Blahblahblah ''를 사용하면 메모리에 문자열 리터럴을 실제로 저장합니다. 다른 것과는 달리, 'C'는 메모리가 할당되지 않은 곳을 말합니다. 아래의 대답에서 알 수 있듯이 문자열 리터럴은'static const char []'이며 배열의 경우와 마찬가지로 첫 번째 요소의 주소를 가져옵니다. –