728x90 반응형 포인터2 배열 주소에 증감 연산자 사용은 왜 안될까? 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. [C언어 코딩 도장 심사문제 답] 49.9_구조체 포인터에 구조체 변수의 주소 할당하기 1. 답 #define _CRT_SECURE_NO_WARNINGS #include #include #include #include #define PI 3.141592f #include #include struct Point3D { float x; float y; float z; }; int main() { struct Point3D p1 = { 10.0f, 20.0f, 30.0f }; struct Point3D* ptr; //정답 구간 시작 ptr = &p1; //정답 구간 끝 printf("%f %f %f\n", ptr->x, ptr->y, ptr->z); return 0; } 2. 결과 3. 정리 malloc() 함수, 동적 메모리 할당을 하지 않고 포인터 변수를 선언하여 구조체 멤버에 접근하는 방식.. 2022. 6. 30. 이전 1 다음 728x90 반응형