C로 프로그래밍 할 때 const
을 사용자 입력 값으로 설정할 수 있습니까? 그렇다면 어떻게?사용자 입력을 사용하여 const를 설정할 수 있습니까?
답변
왜 안 되니?
void some_function(int user_input)
{
const int const_user_input = user_input;
...
return;
}
int main (void)
{
int user_input;
scanf("%d", &user_input);
some_function(user_input);
return 0;
}
고마워! 그게 정확히 내가 찾고 있던거야. – winuall
링커는 보통 (코드 공간 등) 읽기 전용 공간에서 글로벌 CONST를 찾아 따라서이 지역 const를
항상 그렇지는 않습니다 : 로컬 변수는 const 일 수 있고 적어도 C99 및 많은 C89 변형에서 런타임 값에 의해 초기화 될 수 있습니다. –
@JohanBezem OP는 범위를 언급 한 적이 없으므로 신중하지 말고 반대하는 것이 가장 좋습니다. – moshbear
내 대답을 편집했습니다 –
에
참조 의견을 나중에 변경할 수 없습니다는 const를 변수 C가 기술적으로 읽기 전용이다. 따라서 사용자 입력에서 설정할 수 없습니다.
아니요, const는 컴파일 타임에 적용됩니다. 런타임에 const를 시행하려면 자체 척도를 취해야합니다. 다른 답변에 추가
(모두가 '아니오'라고한다), 당신은
static const int notsoconst = 3;
scanf("%d", ((int*) ¬soconst));
처럼 못생긴 일을 할 수 그러나 이것은 컴파일 할 수 있지만 아마 C에서 undefined behavior을 런타임에 충돌 (이고 것 언어 사양) notsoconst
은 읽기 전용 세그먼트 (적어도 Linux에서는 GCC 사용)에 저장되기 때문에.
가능하더라도 이렇게 코딩하지 않는 것이 좋습니다. 그리고 구현이 일부 읽기 전용 세그먼트에 상수를 넣지 않더라도 컴파일러는 const
이 (언어 표준에 지정된대로) 절대 변경되지 않을 것이라고 예상 할 수 있으며이 가정을 사용하여 최적화 할 수 있습니다.
명확히 정의되지 않은 동작입니다 (6.7.3/5). "const-qualified 형식을 사용하는 lvalue를 으로 사용하여 const-qualified 형식으로 정의 된 객체를 수정하려는 경우, 그 행동은 정해지지 않았다. ") –
당신은 Dadam의 대답보다 훨씬 더 직접적으로 가질 수 있습니다. (일반적으로 주석에 넣었을 것입니다 만, 직접 코드에 넣는 것이 더 쉽습니다.)
int get_user_input(void)
{
int user_input;
scanf("%d", &user_input);
return user_input;
}
int main(void)
{
int const user_input = get_user_input();
...
return 0;
}
- 1. 사용자 지정 UISlider 값을 설정할 수 있습니까?
- 2. PHP를 사용하여 화면을 업데이트하고 동시에 사용자 입력을 기다릴 수 있습니까?
- 3. 헤더의 사용자 입력을 사용하여 다른 헤더를 자동 채울 수 있습니까?
- 4. WPF listview를 사용하여 사용자 입력을 캡처 할 수 있습니까?
- 5. 사용자 입력을 UIPickerView에 저장할 수 있습니까?
- 6. jetspeed에서 사용자 정보를 어떻게 설정할 수 있습니까?
- 7. Boost Spirit에 const를 어떻게 구현할 수 있습니까?
- 8. iframe에서 부모 숨겨진 입력을 설정할 수 없습니다!
- 9. Powershell을 사용하여 Active Directory에서 사용자 memberOf 속성을 설정할 수 있습니까?
- 10. WiX를 사용하여 사용자 정의 라이센스를 설정할 수 있습니까?
- 11. linux에서 사용자 환경 변수를 설정할 수 있습니까?
- 12. C#에서 const를 캐스팅 할 수 있습니까?
- 13. const를 유형에 적용 할 수 있습니까?
- 14. 사용자 입력을 사용하여 함수 호출
- 15. UIAavearance를 사용하여 UINavigationItem의 제목보기를 설정할 수 있습니까?
- 16. Moq를 사용하여 세터없이 속성을 설정할 수 있습니까?
- 17. Fiddler를 사용하여 요청에 쿠키를 설정할 수 있습니까?
- 18. "WHSUserPermission"클래스를 사용하여 어떻게 설정할 수 있습니까?
- 19. swfObject를 사용하여 쿠키를 설정할 수 있습니까?
- 20. 어디에서 HttpContext.User를 설정할 수 있습니까?
- 21. 인스턴스를 설정할 수 있습니까?
- 22. JQuery datepicker를 사용하여 연도를 설정할 수 있습니다.
- 23. HtmlUnit은 온라인 서식있는 텍스트 편집기에 내용을 설정할 수 있습니까?
- 24. Python에서 스크립트를 동시에 실행하면서 어떻게 사용자 입력을 얻을 수 있습니까?
- 25. 점점 부스트 :: program_options 대신 표준의 * const를 문자로 입력을 치료하는 : 문자열
- 26. 사용자 입력을 사용하여 사이트 본문 다운로드
- 27. MongoDB : ID를 설정할 수 있습니까?
- 28. 사용자 입력을 사용하여 Zend_Date 월 설정
- 29. JAX-WS 사용하기 : 사용자 에이전트 속성을 어떻게 설정할 수 있습니까?
아니요. 그렇다면 'const'가 아닐 것입니다. 아마도 당신이 구현하고자하는 (불가능한) 해결책보다는 당신이 해결하려고하는 문제를 기술 할 수 있습니다. – samjudson