3
A
답변
4
당신이 할 수의
char *s;
s = "test";
하지만 명심 당신이 다른 곳에 할당 된 읽기 전용 문자열로 s
포인터에 저장되는 문으로. 변경하려고 시도하면 정의되지 않은 동작이 발생합니다 (일부 컴파일러에서는 작동하지만 자주 충돌하는 경우도 있음). 그렇기 때문에 일반적으로 const char *
을 사용합니다.
1
예, 가능합니다.
#include <stdio.h>
int
main(void)
{
// `s' is a pointer to `const char' because `s' may point to a string which
// is in read-only memory.
char const *s;
s = "hello";
puts(s);
return 0;
}
주의 : 배열에서는 작동하지 않습니다.
#include <stdio.h>
int
main(void)
{
char s[32];
s = "hello"; // Syntax error.
puts(s);
return 0;
}
1
따옴표 안에있는 문자열이 컴파일시 컴파일러에서 할당되기 때문에 (위에서 언급 한 바와 같이) 그것은 포인터에 대한 올바른, 그래서 당신이 메모리 주소를 가리킬 수 있습니다. 내용을 변경하려고하거나 고정 크기의 배열을 가리키고 자 할 때 문제가 발생합니다.
관련 문제
- 1. 클래스에서 선언 할 때 컬렉션 속성을 초기화 할 수 있습니까
- 2. RSpec으로 동작을 초기화 할 때 어떻게 선언 할 수 있습니까?
- 3. 왜 changePage 후에 초기화 할 수 없습니까?
- 4. C에서 선언 다음에 배열을 초기화 할 수 있습니까?
- 5. ..를 선언 한 후 최종 변수를 초기화 할 수 있습니까?
- 6. 변수의 출력 후에 변수를 선언 할 수 있습니까 ??? PHP
- 7. 왜 내 프로그램에서 문자열을 선언 할 수 없습니다 : 내 프로그램에서 문자열을 선언 할 수 없습니다
- 8. 이유는 함께 문자열을 초기화 할 수 없습니다 "\ X"내가 함께 문자열을 초기화 할 수 없습니다 왜
- 9. 선언 후 배열 초기화
- 10. 어떻게 동적으로 배열의 문자열을 초기화 할 수 있습니까
- 11. Html.TextBoxFor를 localStorage의 값으로 초기화 할 수 있습니까?
- 12. 런타임시 초기화 할 수있는 const 선언 방법
- 13. Vb.net 선언 및 초기화
- 14. Rakefile에서이 종속성을 어떻게 선언 할 수 있습니까?
- 15. c 선언 및 초기화
- 16. 초기화 후에 MySqlConnection을 사용할 수 없습니다. 왜?
- 17. Ninject는 객체가 초기화 된 후에 추상 의존성을 해결할 수 있습니까?
- 18. PHP 왜 선언 할 때 속성에 할당 할 수 있습니까?
- 19. 클래스에서 문자열을 선언 할 수없는 이유는 무엇입니까?
- 20. Java에서 기본 생성자를 선언 할 수 있습니까?
- 21. GSP 안에 함수를 선언 할 수 있습니까?
- 22. 헤더 파일에 메서드를 선언 할 수 있습니까?
- 23. Ext.Component를 전역 변수로 선언 할 수 있습니까?
- 24. 배열 속성을 어떻게 선언 할 수 있습니까?
- 25. 열거 형의 함수를 선언 할 수 있습니까?
- 26. 트리거 내에서 변수를 선언 할 수 있습니까?
- 27. 익명 개체에 메서드를 선언 할 수 있습니까?
- 28. 비트 테이블을 선언 할 수 있습니까?
- 29. 빈 터플을 어떻게 선언 할 수 있습니까?
- 30. decltype에서 r 값을 선언 할 수 있습니까?
첫 번째 경우에는 문자열에 필요한 메모리를 할당해야합니다. 두 번째로 자동 완성됩니다. – OmnipotentEntity
@OmnipotentEntity : 아니요, 두 경우 모두's'는 정적으로 할당 된 읽기 전용 문자열을 가리 킵니다. –
더 잘 시도해보십시오. –