컴퓨터공학 💻 도서관📚
지옥에서 돌아온 C언어 복습 (2023.3.2목 일기) 본문
C언어 복습이 조금 필요하다는 것을 염두에 두고 있었는데
오늘 C언어를 포인터부터 복습하기 시작했다.
문제 : 포인터 px, py, pz에 있는 주소들을 pz, px, py 처럼 오른쪽으로 이동시킨 후 출력하라.
이 문제를 오랜만에 풀어보았는데 그동안 복습을 게을리 한 것이 바로 들어났다.
그 쉬운 "tmp 임시변수를 이용한 값 교환"을 까먹고 버벅였다.
tmp = px;
px = pz;
pz = py;
py = tmp;
이를 그림으로 단순화하면 이렇다.
코딩하다 만난 오류는 하나였다.(다행히... 💣😝 )
경고C4700
C 및 C++에서는 기본적으로 지역 변수가 초기화되지 않습니다.
초기화되지 않은 변수는 모든 값을 포함할 수 있으며, 변수를 사용하면 정의되지 않은 동작이 발생합니다.
경고 C4700은 거의 항상 프로그램에서 예측할 수 없는 결과 또는 충돌을 일으킬 수 있는 버그를 나타냅니다.
초기화에 대한 이슈였다.
int x, y, z;
int* px, * py, * pz, *tmp;
px = &x; py = &y; pz = &z; // 이 코드를 scanf 다음에 써서 오류가 났었다. 변수를 사용하기 전에는 꼭 초기화를 하기
scanf("%d %d %d", px, py, pz);
완성된 코드
#include <stdio.h>
#pragma warning(disable:4996)
int main() {
int x, y, z;
int* px, * py, * pz, *tmp;
px = &x; py = &y; pz = &z;
scanf("%d %d %d", px, py, pz);
tmp = px;
px = pz;
pz = py;
py = tmp;
printf("%d %d %d", *px, *py, *pz);
return 0;
}
'📚✍마법 수습생의 여행일기' 카테고리의 다른 글
훈련 스케줄 (0) | 2024.04.03 |
---|---|
가끔씩 찾아왔었던 손님 (0) | 2024.03.25 |
꿈, 진로, 목표, 성취, 성장 (2024.2.26 월) (0) | 2024.02.26 |
지나간 돌다리도 두들겨 보자 (2023.3.3금) (0) | 2023.03.03 |
잘 모르겠으니 일단 이렇게 생각해보자 (2023.3.1수) (0) | 2023.03.02 |
Comments