2023/C 썸네일형 리스트형 포인터 대상의 const 선언 const 선언의 핵심 : 값을 변경하는 방법에 제한을 둔다. 이것은 엄밀히 말해 무엇인가를 상수로 만드는 것과는 다르다. 1. const int* ptr=# 포인터 변수가 참조하는 대상의 변경을 허용하지 않는 const 선언 해당 const 선언의 위치는 맨 앞부분이다. 의미 : 포인터 변수 ptr을 이용해서 ptr이 가리키는 변수에 저장된 값을 변경하는 것을 허용하지 않는다. 2. int* const ptr=# 포인터 변수의 상수화 포인터 변수 ptr은 상수가 된다. 이는 한번 주소값이 저장되면 그 값의 변경이 불가능하다. 즉, 한번 가리키기 시작한 변수를 끝까지 가리켜야 한다. 물론 ptr이 상수일 뿐이니 *ptr=40;과 같이 ptr이 가리키는 대상에 저장된 값을 변경하는 연산은 문.. 더보기 포인터와 배열, 포인터 연산 [1] 배열의 이름 배열의 이름은 포인터이다. 단, 그 값을 바꿀 수 없는 '상수 형태의 포인터'이다. 배열의 이름은 배열의 시작 주소 값을 의미하며, 그 형태는 값의 저장이 불가능한 상수이다. 배열의 이름도 포인터이므로 배열의 이름을 피연산자로 하는 * 연산이 가능하다. 위의 말들이 무슨 뜻인지 부연설명하면, 배열의 이름이 "상수 형태의 포인터"라는 개념은 C 언어에서의 배열과 포인터 사이의 관계를 설명하기 위한 개념이다. 이것은 배열과 포인터 간의 유사성을 강조하는 방식으로 설명할 수 있다. 1. 배열의 이름은 포인터 상수(constant pointer)이다. 배열을 선언하면 배열의 이름은 해당 배열의 첫 번째 요소를 가리키는 포인터 상수로 간주된다. 이 포인터는 상수이기 때문에 다른 메모리 주소로 .. 더보기 배열 기반의 문자열 표현 [배열기반의 문자열 표현] #define _CRT_SECURE_NO_WARNINGS #include int main(void) { char str[50]; int idx = 0; printf("문자열 입력 : "); scanf("%s", str); printf("입력 받은 문자열 : %s\n", str); printf("문자 단위 출력 : "); while (str[idx] != '\0') { printf("%c", str[idx]); idx++; } printf("\n"); return 0; } 위의 코드를 실행할 때 문자열 Hello World!를 입력하면 위와 같이 Hello까지만 입력받을 수 있다. 왜 공백 문자 뒤에 있는 World!는 입력받지 못하는 것일까? Hello 바로 뒤에는 공백문자(널.. 더보기 이전 1 다음