Language/C

· Language/C
NULL 포인터란 메모리가 할당되지 않은 포인터를 의미한다. NULL포인터는 아무것도 가리키지 않는 상태를 의미한다. 즉 NULL포인터의 경우에는 참조연산자를 이용한 역참조가 되지 않는다. 123456789#include int main(){ int *ptr = NULL; printf("%p\n", ptr); return 0;} cs 다음 코드를 보자. int형 포인터 ptr에는 NULL이라는 값이 들어가있다. 그 밑에서 해당 포인터의 주소를 이스케이프 시퀸스 %p를 이용해 출력해보면 다음과 같이 주소값이 0으로 된 상태로 출력되는것을 볼 수 있다. 그렇다면 이 NULL포인터는 어떨때 쓸까? NULL포인터는 밑의 코드와 같이 만약 메모리 값이 NULL이라면 메모리를 할당하는 과정에 사용하기도 한다. 12..
· Language/C
(주의 : 절대 코드 확장자를 .cpp로 쓰지 말것) 포인터를 할 때 포인터를 이용해 변수의 메모리 주소를 포인터에 저장해서 사용하기도 하였다. 다른 경우는 우리는 배열에 크기를 정해주고 사용하기도 하였다. 하지만 이번에는 scanf를 통해 메모리 공간을 사용자가 직접 원하는 만큼 메모리 공간을 사용하도록 해보자. scanf를 통해 원하는 만큼 메모리 공간을 지정한다는 문구를 잘 생각해보자. scanf를 통해 입력을 받고 해당 크기만큼 배열이 생성된다. 기본적으로 scanf를 통해 값을 넣는다는 것은 프로그램이 실행되고 나서의 일이다. 반면 배열에 크기를 미리 지정해주는것은 코드를 작성할 때의 일, 즉 프로그램이 실행되기 전의 일이다. 전자와 같이 프로그램이 실행되고있는 시간동안 사용할 메모리 공간을 할..
· Language/C
Microsoft Visual Studio 2017 Community버전을 쓰다보면 scanf를 쓰게되면 scanf_s로 쓰라고 권장을 하면서 오류가 난다. scanf와 scanf_s함수는 표준 입력하는데 있어서 쓰이는 함수이다. 차이점이라면 scanf_s는 scanf의 버퍼 오버플로우등 다양한 보안상의 문제를 보안한 함수이다. 최상위 버전에서는 SDL, Security Development Lifecycle검사가 체크되어있어 비주얼 스튜디오에서는 scanf_s가 없으면 오류가 난다. scanf, scanf_s의 문법은 거의 동일하다. 단 %s 를 통한 문자열을 받을 때는 입력개수를 인자로 한개를 더 넣어주어야 한다.일반적인 gcc-compiler상에서 문자열을 받는다면(gcc의 대표적인예시 : Dev-..
Hoplin
'Language/C' 카테고리의 글 목록