인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

변남혁님의 프로필 이미지
변남혁

작성한 질문수

홍정모의 따라하며 배우는 C언어

손으로 입력하기에는 버거운 상수 배열을 정의하는 방법이 있을까요?

작성

·

137

0

공부를 하다보니까 python의 딕셔너리 같은 기능을 구현 하려고 시도했습니다.

상수 배열 2개를 정의 하려고 하는데 1개는 배열의 원소들이 규칙이 있어서 루프문을 통해 정의하려고 시도했지만.. 상수 배열의 원소는 변경이 안되서 잘 안되더라구요.

그래서 임시로 배열을 만들어서 루프문을 통해 배열을 만들고 나서 상수배열을 정의할때 임시배열의 이름을 가지고 할당하려고 했습니다.

그러나 이것도 컴파일자체가 안되더라구요..  어떤 방법이 있을까요?

만들려고 시도했던 프로그램은 콘솔창에 스트링을 입력하면 그 스트링을 모스부호로 바꿔서 콘솔창에 출력해주는 것이였습니다.

답변 1

1

안녕하세요

상수는 선언과 동시에 정의, 즉 초기화가 이루어져야 하기 때문에 상수 배열을 선언 이후 for문을 통해 원소들에 값을 할당하려는 행위는 불가능합니다.

반복문으로 초기화시키고 싶다면 불가피하게 상수라는 성질을 버리고 그냥 일반 배열 쓰셔야할 것 같습니다.

상수 배열로 선언하고 싶으신 이유가 한번 할당한 후 그 누구도 값 변경이 불가능하도록 하기 위해서라면 ..

C언어는 잘 모르겠지만.. 객체지향언어인 C++ 에서라면 일반 배열을 클래스의 private 멤버로 설정하여 외부에서 접근하지 못하도록 막는 방법을 사용할 수 있을 것 같아요! 할당도 접근 함수로 이루어지게끔 하구요. 

변남혁님의 프로필 이미지
변남혁
질문자

답변 감사드립니다!

변남혁님의 프로필 이미지
변남혁

작성한 질문수

질문하기