728x90 반응형 C2 배열 주소에 증감 연산자 사용은 왜 안될까? 1. 예상되는 상황 #define _CRT_SECURE_NO_WARNINGS #include #include int main() { char str[32]; scanf_s("%s", str, 32); for (int i = 0; i < strlen(str); i++) { printf("%c\n", *str++); } return 0; } 배열은 포인터로 바꿔 표현할 수도 있으니까 *(str+i)와 같은 형식으로도 작성이 가능하니 *str++해도 될 것 같다고 생각했다. 하지만 위 코드를 실행해보면 *str++에서 컴파일러 오류로 확인된다. 왜그럴까? 2. 원인 배열을 포인터 표현으로 바꿔 사용할 때 주의할 점이 있다. 배열은 컴파일러에 의해 BP를 기준으로 상대적 위치 표현으로 변경되는 문법이다. 따라서.. 2023. 4. 7. scanf_s 에러 C6328 크기 불일치 1. 예상되는 상황 #include int main() { char str[32]; scanf_s("%s", str, sizeof(str)); printf("%s", str); } 위 코드는 정상적으로 실행은 되지만, 아래 행에서 경고가 확인된다. scanf_s("%s", str, sizeof(str)); 구글링을 해봤지만 경고에 대한 설명과 해결 방법에 대한 자료를 제대로 본 것이 없다. 이런 방식으로 작성을 해본적이 없거나 왜 이런 경고 메세지가 발생했는지 궁금하지 않았나보다. 저렇게 사용하지 않고도 32와 같은 숫자로 명시해서 해결하는 등 방법은 많긴하니까. 하지만 그래도 개발자로서 이유는 알고 해결을 해야하지 않겠는가? 이 글을 읽고 계신 분들도 위의 코드와 비슷하게 작성했을 가능성이 높다. 해결.. 2023. 4. 6. 이전 1 다음 728x90 반응형