[6] 문자열과 포인터
포인터를 사용해서 문자열을 저장하고 다룰 수 있습니다.
위와 같이 char형 포인터에 값을 저장하면, 메모리에 값이 저장이 되고, 포인터가 생성되어 값의 주소를 가리켜 총 2개의 변수(변수, 포인터 변수)가 생성됩니다.
그런데 만약 char형 포인터가 초기화가 안되는 오류가 발생할 수 있습니다.
그럴경우 아래 링크를 참조해보면 좋을 것 같습니다.
[Error, VS] "const char *" 형식의 값을 사용하여 "char *" 형식의 엔터티를 초기화할 수 없습니다.
1 char* window_name = "Threshold Demo"; cs 위와 같은 코드가 비주얼 스튜디오 2015에서는 잘 되는데 2017부터는 오류가 발생한다. 해결책은 1. 아래와 같이 const를 붙이거나 1 const char* window_name ..
shjz.tistory.com
저장된 문자열을 출력하는 방법은 2가지가 있습니다.
1. 배열을 사용해서 출력하기
2. 포인터를 사용해서 출력하기
문자열을 초기화하는 방법은 2가지가 있습니다.
각각 특징이 있는데
1. 배열로 문자열을 초기화하면 이후 대입을 할 수 없다.
2. 포인터로 문자열을 초기화하면 대입을 할 수 있다.
배열로 초기화한 문자열에 새로운 문자열을 대입하는 경우
포인터로 초기화한 문자열에 새로운 문자열을 대입하는 경우
만약 문자열 상수(0)를 요소에 대입하려고 할 때 배열로 선언된 경우는 가능하지만, 포인터로 된 경우에는 오류가 발생합니다.
문자열 입력과 대입
char형 배열에 입력을 받아 대입하는 것은 할 수 있지만, 입력을 받아서 char형 포인터에 대입하는 것은 할 수 없습니다.
왼쪽은 일반 배열에 저장해서 잘 저장이 됐지만, 오른쪽은 포인터를 이용해서 입력을 받으려고 해서 오류가 생깁니다.
scanf_s함수를 사용해서 입력을 받을 때 메모리의 크기를 전달하지 않으면 오류가 생길 수 있습니다.
입력시 오류가 생긴다면 아래를 참고하면 도움이 될 수 있습니다.
scanf_s 함수 사용 시 주의 사항
: C 언어 관련 전체 목차 http://blog.naver.com/tipsware/221010831969 1. scanf 함수의 사용과 경고 발...
blog.naver.com
※ 배열을 사용해서 문자열을 취급할 때는 하나씩 문자를 저장하는데 이 방법은 문자열을 다룰 때 효율적이지 못합니다.
따라서, 표준 라이브러리 함수에서 문자열을 한 번에 복사처리할 수 있는 함수를 이용합니다.
문자열의 배열을 나타내는 방법에는 2가지가 있습니다.
문자열의 배열로 나타내는 것과 포인터의 배열로 문자열의 배열을 나타내는 방법입니다.
문자열 배열
포인터 배열
문자열의 배열의 초기화를 하지 않았거나 기존에 있는 값이 있을 때 대입을 할 수 있을까요?
포인터로 선언된 경우는 대입을 할 수 있었습니다.
하지만 포인터가 아닌 배열 형태의 경우는 초기화를 하지 않고 대입을 할 수가 없었습니다.
이것으로 1칠판 공부를 마치겠습니다.