본문 바로가기

Visual Studio 2022 단축키 모음 2022 버전을 새롭게 받았는데 이전과는 단축키가 조금 달라진게 있는 것 같아서 새롭게 포스팅한다. 그리고 내가 주로 쓰는 것들만 적어봐야지 ㅎㅎ 1. 한 줄 주석하기 - Ctrl + K + C - 라인 하나를 주석처리한다. 2. 한 줄 주석 해제 - Ctrl + K + U (여러 줄 하려면 드래그하고 얘네 쓰면 된다) 3. 현재 접근 가능한 클래스 목록, 함수 목록 보기 - Ctrl + Space 4. 입력 커서를 처음 위치로 이동 - HOME └ 연계: 라인 앞줄단 다 선택 - Shift + HOME 5. 입력 커서를 줄의 마지막 위치로 이동 - END └ 연계: 라인 앞줄단 다 선택 - Shift + END 6. 라인 줄 삭제 - Shift + Delete / Ctrl + Shift + L 7. 구..
C언어 동적 메모리 할당(2) 드디어 완강이다! 마지막 수업!!! *추가) malloc은 기본적으로 void 형으로 할당 되어지기 때문에 내가 원하는 형으로 변환 시켜주는 겁니다. float이 필요하면 (float *)로 해주고 int가 필요하면 (int *)로 형 변환 시켜주는겁니다. 이렇게 형변환을 안해주면 컴퓨터 입장에서는 무슨 형으로 쓸 지 모르기 때문입니다. -> 그래서 형변환을 앞에 무조건 써야한다! 밑에 예제도 보면 int**로 형변환했다! ㅎㅎ 구조체 동적 메모리 할당을 포인터 변수로 선언하면 보통 p.number 이런식으로 가능했는데 p->number 이렇게 가능해진다. 그래서 메모리 공간에 struct Book 2개 공간만큼 선언하고 주소 2개에 1,2번 다 할당하고 showBook 함수로 출력하게끔 나타냈다. 와 ..
C언어 동적 메모리 할당 여기부터는 내가 잘 모르는 문법이다 ㅠㅠ 학부때도 여기까지 안나가봐서.. 일단 강의들은거로만 쓰자면 pi = (int *)malloc(sizeof(int)); 여기서 (int *)이 형변환이다 malloc은 메모리에 할당할 수 있게 하는건데 sizeof(int)여서 int = 4byte가 할당된다. 메모리에 4byte가 있다는 소리!! 그래서 *pi = 100; 을 넣고 free()로 반환을 시켜야한다. 그래서 free(pi); 가 있는 것 ! 이게 C++에서는 new랑 delete로 바뀐다고 한다 ㅎㅎ 나는 C++을 미리 공부해가지고 malloc이랑 free가 뭔지 엄청 궁금해했었다. 고민 해결 휴우!! #include 은 동적 메모리 할당 malloc을 불러오기 위해서 사용한다! 음 하나씩 보자면 c..
C언어 구조체의 활용(2) 구조체는 같은 구조체라 하더라도 비교가 힘들다. 그래서 이런식으로 구조체 비교 구문을 쓰는데 논리 연산을 써서 사용한다. (p1.x == p2.x) && (p1.y == p2.y) 와 같이! 그리고 main에 쓰지 않고 밖으로 함수를 빼서 사용한다. 그래야 간결하고 알아보기가 쉽다. 주석 달린 것처럼 하면 안된다! 논리연산이랑 구조체 안의 point 변수를 이용해서! 메인이니까 comparePoint(p1, p2);를 한다! 이거는 이제 내가 직접 VS해서 한거다. 이게 버전업 돼서 그런지 (VS2022쓰는중) 그냥 scanf하면 오류난다 .. #pragma warning(disable:4996) 이거 넣어줘야함.!! 그리고 문자열 또한 포인터이기 때문에 (배열이라) scanf에서 & 빼준다! 저번이랑 ..
C언어 구조체의 활용 사각형의 둘레와 넓이를 구할 것이다! 여기서 보면 point 구조체에서 x와 y를 지정해주고 rect 구조체에서 point 구조체를 받으며 변수를 p1, p2로 설정했다! 그러니까 쉽게 말하면 rect 안에 point가 있는 셈이 된다 (구조체) 그러므로 rect 구조체는 point 구조체를 쓸 수 있다! 메인에서 rect 구조체를 r로 변수를 잡고 scanf니까 주소 &r.p1.x , &r.p1.y 가 된다. w 는 가로 길이, h는 세로 길이니까 abs 절댓값 걸어서 빼주고 넓이는 가로X세로, 둘레는 2X가로 + 2X세로이다! 저기서 y가 아니라 h이다.(오타나심) 이게 맞다. 출력 결과는 이다!! 참 쉽쥬!!
C언어 구조체 이번 시간은 구조체에 대해서 배울 것이다!! 사실 구조체는 C++에서는 클래스와 매우 유사하다. 기억을 더듬어보면... 구조체보단 클래스를 엄청 썻던 기억이!!! 여기서 보면 알 수 있듯이 struct studnet는 구조체이다. 그래서 이거를 변수 s로 할당시키고 s.number으로 구조체에 있는 number에 넣는다. 그리고 strcpy로 홍길동도 넣고 하면 잘 나오는 걸 확인할 수 있다!!! %s는 문자열 그대로 받는것이고 %lf는 double형일때 쓰인다. *float은 %f로 쓰인다. scanf에서 근데 보면 number나 grade는 & 주소값 따른는데 name은 주소값이 아니라 그냥 입력이어서 s.name을 쓴 것을 알 수 있다. 이거 좀 주의해야 할 듯!! 이렇게 나온다 ㅎㅎ 다음은 두 점..
C언어 문자열 영어 - 1byte 한글 - 2byte Char array[10]; 영어:10글자 한글:5글자 배열은 내부적으로 포인터와 아주 흡사! \0은 Null이다! 즉 이게 무슨 소리냐 하면 배열에서는 끝에 무조건 Null이 들어가게 되있다. 그래서 gets(input); 에서 문자를 입력받고 (엔터누르기 전까지 계속 입력받는다 왜? char input[1001]로 1001글자까지 선언할 수 있기 때문에. 그래서 count를 0으로 초기화하고 Null인 \0 만나기 전까지 count를 증가시켜주는 것이다. (!=는 Not Same의 의미이므로) 즉, 쉽게 말해서 0,1,2,3,4번지까지 다 H,E,L,L,O 값인데 나머지 5~1000번지까지 Null이 된다. 그러면 당연히 문자열의 길이는 HELLO의 경우 5가 ..
C언어 포인터 C언어의 꽃 포인터다! 내가 학부 1학년때 C언어를 배우다가 포인터에서 막혔는데 졸업하고 1년 지난 지금 정보처리기사 공부를 하면서 포인터를 완.전.이.해 해버렸다 그때는 왜 몰랐지?? 흐음... 어찌보면 내가 제어과여서 코딩의 중요성을 간과했을지도 모른다.. 오히려 컴공이었다면 엄청 팠겠지.. 다만 지금은 이제 아예 이 길로 가려고 마음을 먹어서 완전한 공부를 지향하고있다. 대표적인 swap을 포인터를 사용해서 하는 것이다. 이게 주소 참조였나? 그거였을 거다 아마 void swap(int *x, int *y) { int temp; temp = *x; *x = *y; *y = temp; } 이러면 스왑 끝이다! 교환 !! 참고로 &는 주소 불러오는 것이라 *인 포인터와 찰떡궁합을 맞아야한다. 값을 넣게..