티스토리

Hongsuk's Note
검색하기

블로그 홈

Hongsuk's Note

hnsuk.tistory.com/m

엔티그 님의 블로그입니다.

구독자
3
방명록 방문하기

주요 글 목록

  • [WSL2] Docker container 원격 접속 서론 연구실에 배정된 머신러닝 학습용 컴퓨터를 서버실에 상주시키게 되면서, 원격으로 접속 가능하도록 만들어야 했다. 목적이 학습용이니 docker는 필수라고 생각했고, 쾌적한 사용을 위해 docker에 ssh 연결을 해야 했다. 컴퓨터가 windows10이었지만, 원격 데스크톱으로 제어를 하기 위해 그대로 사용했다. (사용이 편한 Chrome Remote Desktop은 Ubuntu를 '공식적으로' 지원하지는 않는다.) 구조 굳이 저렇게 해야할까 싶지만, Ubuntu에 Nvidia driver와 Cuda를 설치해본 사람은 이해해 줄거라 믿는다. 특히, 서로 다른 cuda 버전과 opencv, pytorch 등을 사용하는 사람들이 나온다고 생각하면... docker는 필수다. 포트포워딩 학습을 진행할 최상.. 공감수 0 댓글수 0 2022. 3. 24.
  • [Jetson] windows10 vscode와 ssh 연결 서론 Jetson Xavier를 많이 사용하게 되면서, windows10 컴퓨터와 Jetson을 옮겨 다닐 때마다 모니터 외부입력, 키보드, 마우스 변경에 상당한 시간을 뺏기게 되었다. VNC(Virtual Network Computing)를 사용해 보았으나 생각보다 반응이 느려 답답했는데, 최근 차선책으로 쓰고있던 SSH 연결에 XLaunch 적용이 성공하면서 사용하기 매우 편해졌다. 그래서 연구실 사람들과 공유를 하기 위해 SSH 연결법을 정리하고자 한다. Jetson setup 1. ip 할당 jetson을 컴퓨터에 연결할 때마다 ip가 바뀌는 문제가 있다. 그래서 windows10 컴퓨터와 직접 연결로 만들기 위해 설정을 변경한다. 1. 오른쪽 위 '와이파이 모양' 혹은 '위 아래 화살표'를 누르.. 공감수 1 댓글수 0 2022. 3. 24.
  • 컴퓨터 셋팅 Windows 1. 블루투스 이어폰 설정 (끊김과 노이즈 완화 방법) 블루투스 장치 표시 - 장치 및 프린터 - 속성 - 서비스 - 핸즈프리 전화 통신 해제 Ubuntu 1. 한글 설정 https://blog.naver.com/ins_soul80/222280582089 2. 노트북 터치패드 https://blog.naver.com/ehcibear314/221414036187 3. Ros 한줄설치 https://robertchoi.gitbook.io/ros/install 4. tmux https://velog.io/@ur-luella/tmux-%EC%82%AC%EC%9A%A9%EB%B2%95 공감수 0 댓글수 0 2021. 6. 24.
  • [Git] 5장. 깃허브로 협업하기 원격 저장소 복제하기 원격 저장소를 기존에 연결된 지역 저장소 외에 다른 지역 저장소에서 사용하려면 원격 저장소에 담긴 내용 전체를 지역 저장소로 가져와야 한다. 원격 저장소를 지역 저장소로 똑같이 가져오는 것을 '복제한다'고 하거나 '클론' 또는 '클로닝'이라고 한다. $ git clone 복제할 디렉터리가 없다면 자동으로 디렉터리가 생성된다. 현재 디렉터리에 복제하려면 대신 마침표(.)를 입력하면 된다. 컴퓨터에 올리고 내려받아 작업하기 파일을 커밋과 푸시를 하면 원격 저장소에 저장이 되고, 다른 컴퓨터에서 풀하면 변경 사항이 지역 저장소에 저장된다. - A 컴퓨터 $ git commit -am $ git push - B 컴퓨터 $ git pull 원격 master 브랜치 지역 저장소의 master .. 공감수 0 댓글수 0 2021. 5. 27.
  • [Git] 4장. 깃허브로 백업하기 깃허브 원격 저장소에 깃을 사용할 수 있다. 지역 저장소를 백업할 수 있다. 협업 프로젝트에 사용할 수 있다. 자신의 개발 이력을 남길 수 있다. 다른 사람의 소스를 살펴볼 수 있고, 오픈 소스에 참여할 수도 있다. 원격 저장소에 연결하기 깃허브 저장소 화면에 여러가지 접속 방법을 알려준다. 아래의 방법은 '커맨드 라인에서 기존 저장소를 푸시하기' 방법이다. 원격 저장소에 origin을 추가하겠다고 깃에게 알려준다. 깃허브 저장소 주소를 그대로 쓰면 너무 길기 때문에 origin이라는 단어로 줄여서 remote에 추가한다. $ git remote add origin -v 옵션으로 원격 저장소 연결 상태를 확인할 수 있다. $ git remote -v 원격 저장소에 파일 올리기 지역 저장소의 커밋을 원격 .. 공감수 0 댓글수 0 2021. 5. 23.
  • [Git] 3장. 깃과 브랜치 브랜치 버전 관리 시스템에서는 나무가 가지에서 새 줄기를 뻗듯이 여러 갈래로 퍼지는 데이터 흐름을 가리킨다. 깃으로 버전 관리를 시작하면 기본적으로 'master'라는 브랜치가 만들어진다. 새 브랜치를 만들면 기존에 저장한 파일을 master 브랜치에 그대로 유지하면서 기존 파일 내용을 수정하거나 새로운 기능을 구현한 파일을 만들 수 있다. 새 브랜치에서 원하는 작업을 다 끝냈다면 새 브랜치에 있던 파일을 원래 master 브랜치에 합칠 수 있다. 기본적으로 가장 최근의 커밋을 가리킨다. 분기 master 브랜치에서 뻗어 나오는 새 브랜치를 만드는 것을 '분기(branch)한다'고 한다. 병합 분기했던 브랜치를 master 브랜치에 합치는 것을 '병합(merge)한다'고 한다. HEAD 현재 작업 트리(.. 공감수 0 댓글수 0 2021. 5. 22.
  • [Git] 2장. 깃으로 버전 관리하기 깃 초기화 해당 디렉터리에서 깃을 사용할 수 있도록 초기화 해준다. $ git init 깃 상태 확인 해당 디렉터리의 깃 상태를 확인할 수 있다. $ git status 버전 버전은 문서를 수정하고 저장할 때마다 생기는 것으로 점차 쌓인다. 깃은 파일을 다른 이름으로 저장하지 않고, 만든 시간과 수정 내용까지 기록하여 저장한다. 깃은 버전마다 작업했던 내용을 확인할 수 있고, 그 버전으로 되돌아갈 수도 있다. 작업 트리 파일 수정, 저장 등의 작업을 하는 디렉터리로, 우리 눈에 보이는 디렉터리가 바로 작업 트리다. 스테이지 버전으로 만들 파일드리 대기하는 곳이다. 스테이징 영역(staging area)라고 부르기도 한다. 저장소와 함께 .git 디렉터리에 숨은 파일 형태로 존재한다. 스테이징 수정한 파일.. 공감수 0 댓글수 0 2021. 5. 18.
  • [Git] 1장. 깃 시작하기 깃 특징 버전 관리: 수정 내역을 구체적으로 기록 가능하다. 백업: 원격 저장소에 저장해 둘 수 있다. 협업: 원격 저장소를 통해 파일을 주고 받으며 일할 수 있다. 깃 프로그램 깃허브 데스크톱 (GitHub Desktop): 깃허브에서 제공하는 프로그램으로, 기본적인 기능만 있어 고급 기능이 적다. 토터스깃 (TortoiseGit): 윈도우 전용 프로그램으로, 탐색기의 빠른 메뉴에 추가된다. 소스트리 (SourceTree): 고급 기능을 사용할 수 있는 프로그램으로, 사용법이 복잡하다. 커맨드 라인 인터페이스 (Command Line Interface): 터미널 창에 명령을 입력하는 방식으로, GUI가 없다. 깃 설치 리눅스 명령어를 사용할 수 있는 Git Bash(Command Line Interfa.. 공감수 0 댓글수 0 2021. 5. 17.
  • [CNN] GoogLeNet 소개 GoogLeNet은 2014년도 ILSVRC(ImageNet Large Sclae Visual Recognition Challenge)에서 우승한 CNN 네크워크입니다. 정확하게 보면 GoogLeNet은, Inception이라는 개념의 네트워크들 중 하나입니다. 따라서 GoogLeNet은 Inception-v1와 같은 모델입니다. GoogLeNet의 논문은 "Going Deeper With Convolutions"로, GoogLeNet이란 이름이 붙은 이유는 구글이 알고리즘 개발에 참여했기 때문입니다. 특징 Inception Module GoogLeNet은 9개의 Inception Module을 포함하고 있습니다. Inception Module은 다양한 종류의 특성을 도출하기 위해 다양한 사이즈의 .. 공감수 1 댓글수 1 2021. 4. 20.
  • [CNN] ResNet18 소개 ResNet18은 18개 층으로 이루어진 ResNet을 의미합니다 ResNet은 2015년도 ILSVRC(ImageNet Large Sclae Visual Recognition Challenge)에서 우승한 CNN 네크워크입니다. ResNet 연구팀은 이전 VGGNet이 밝힌 Layer가 깊어질수록 성능이 좋아지는 사실을 심층적으로 연구한 결과 Layer가 너무 깊어져도 성능이 떨어지는 현상을 확인합니다. Layer가 깊어질수록 미분을 점점 많이 하기 때문에, Layer의 미분값이 작아져 weight의 영향이 작아지는 Gradient Vanishing이 발생하여 Training Data로 학습이 되지 않는 문제가 발생합니다. 그래서 ResNet은 Skip Connection을 이용한 Residual.. 공감수 3 댓글수 0 2021. 4. 19.
  • [CNN] VGG16 소개 VGG16은 16개 층으로 이루어진 VGGNet을 의미합니다. VGGNet(VGG19)는 2014년도 ILSVRC(ImageNet Large Sclae Visual Recognition Challenge)에서 준우승한 CNN 네크워크입니다. VGGNet(VGG19)는 사용하기 쉬운 구조와 좋은 성능 덕분에 그 대회에서 우승을 거둔 조금 더 복잡한 형태의 GoogLeNet보다 더 인기를 얻었습니다. VGGNet의 논문 이름은 "Very deep convolutional networks for large-scale image recognition"로, 네트워크의 깊이를 깊게 만드는 것이 성능에 어떤 영향을 미치는지 확인하는 목적을 가집니다. 특징 VGGNet 연구팀은 깊이의 영향만을 최대한 확인하고자 .. 공감수 2 댓글수 0 2021. 4. 19.
  • [CNN] AlexNet 소개 AlexNet은 2012년도 ILSVRC(ImageNet Large Sclae Visual Recognition Challenge)에서 우승한 CNN 네크워크입니다. 당시 대세인 여러 알고리즘들과 기술들을 통한 객체 인식을 제치고 딥러닝 기술이 최고 성능을 낼 수 있음을 증명한 네트워크로, AlexNet 이후로 GPU 구현과 Dropout 적용이 보편화 되었습니다. AlexNet의 논문 이름은 "ImageNet Classification with Deep Convolutional Neural Networks"로, 논문의 저자가 Alex Khrizevsky의 이름을 따서 AlexNet이라고 부릅니다. 특징 논문에서 Alexnet은 이전에 사용된 딥러닝 CNN 네트워크인 LeNet-5와 비교하며 설명합.. 공감수 0 댓글수 0 2021. 4. 18.
  • [실습] YOLO - Object Detection 코드 소개 pre-trained model을 가지고 object detection을 하기 전에, 코드 설명을 하겠습니다. ./darknet detect cfg/yolov3.cfg yolov3.weights data/dog.jpg 공식홈페이지에는 위와 같은 명령어가 소개되어 있습니다. 이를 통해 darknet.c의 파일의 detect란 명령을 내렸다는 것을 알 수 있습니다. #include "darknet.h" #include #include #include = 0){ cuda_set_device(gpu_index); } #endif if (0 == strcmp(argv[1], "average")){ average(argc, argv); } else if (0 == strcmp(argv[1], "yolo".. 공감수 1 댓글수 0 2021. 4. 7.
  • [Perception Open Source] YOLO 소개 YOLO(You Only Look Once)는 Object Detection을 구현한 오픈소스입니다. 최근 YOLO, SSD, Mask RCNN, RetinaNet 등의 다양한 Object Detection 알고리즘들을 개발됐는데, YOLO는 기존 모델들 보다 더 높은 정확도를 추구하는 것이 아닌, 근접한 정확도를 가지면서도 더 많은 양의 이미지를 처리할 수 있는 실시간 Object Detection를 하고자 개발되었습니다. YOLO의 특징을 세 가지로 요약하면, You Only Look Once(이미지 전체를 단 한 번만 본다), Unified(통합된 모델을 사용한다), Real-time Object Detection(실시간 객체 탐지)가 됩니다. 첫번째, YOLO 이전 Object Detecti.. 공감수 0 댓글수 0 2021. 4. 7.
  • [Perception Open Source] Point Cloud Library 소개 Point Cloud Library는 Point Cloud를 처리하는 알고리즘들을 구현해둔 라이브러리입니다. 라이브러리 소개에 앞서, Point Cloud가 무엇인지 알아봅니다. LiDAR 센서, RGB-D 센서는 물체에 빛이나 신호(Wave)를 보내서 돌아오는 시간을 기록하여 거리 정보를 알아내 하나의 Point를 생성합니다. 그리고 이 포인트들이 3차원 공간에 모여있는 것을 Point Cloud라고 합니다. Point Cloud는 깊이(z)를 가지고 있기 때문에 N x 3 Numpy 배열로 표현 됩니다. 하지만 센서에서 제공되는 추가 정보가 있을 경우 N x 4 Numpy 배열로 표현 됩니다. 예를 들어 Lidar 센서 데이터에는 반사도가 추가될 수 있으며, RGB-D 센서 데이터에는 색 정보가.. 공감수 1 댓글수 0 2021. 4. 6.
  • [Perception Data set] KITTI 소개 KITTI는 2012년 3월에 공개된 오픈데이터 및 benchmark로 WAYMO나 nuScenes와 달리 데이터셋을 직접 다운받아 사용합니다. 주행 장면은 rawData 기준 시간이 졍해져 있지 않고 약 10Hz의 frame을 갖고 있습니다. 그리고 8가지 종류의 주석이 포함되어 있습니다. 그러나 공개된 데이터들을 대부분 2011년 9월에 만들어진 파일들입니다. 다른 데이터셋에 비해 오래된 데이터이고 신호등이 주석 처리 되어있지 않아 학습에 제한이 있는 단점이 있지만, KITTI를 활용한 논문이 많기 때문에 관련 자료가 방대하다는 장점이 있습니다. 그리고 benchmark로 활용이 가능해서 알고리즘 점수를 알아볼 수 있는 활용도가 있습니다. KITTI-360이라는 조금 더 최신화된 데이터셋이 있으.. 공감수 0 댓글수 1 2021. 4. 4.
  • [Perception Data set] WAYMO Opensource Dataset 소개 WAYMO Opensource Dataset은 2019년 8월부터 시작된 연구 목적의 비상업용 개방형 오픈데이터로 Motion Dataset과 Perception Dataset으로 나누어 제공되는데, 인지와 관련된 데이터는 Perception Dataset입니다. Perception Dataset은 WAYMO 자율주행 차량이 1950개 주행 구간에서 수집한 지역별, 시간별, 날씨별 데이터를 포함하고 있습니다. (2021년 3월 기준) 각 구간은 10Hz, 20초의 연속주행 데이터를 담고 있으며, 웨이모가 무인 자율주행 택시 시범 서비스를 진행하고 있는 미국 애리조나주 피닉스의 운행 데이터도 포함돼 있습니다. 데이터는 5개의 라이다(LiDAR)와 5개의 전·측면 표준 카메라로 수집됐으며, 360도 고.. 공감수 2 댓글수 0 2021. 4. 4.
  • [Perception Data set] nuScenes dataset 소개 nuScenes dataset은 2019년 3월에 공개된 연구 목적의 비상업용 개방형 오픈데이터로 교통 혼잡지역으로 알려진 보스턴과 싱가포르의 주행 장면 1000개를 제공합니다. 주행 장면은 개당 2HZ, 20초의 영상으로, 물체 단위로 3차원 박스가 23개의 클래스와 8개의 속성으로 주석이 달려있으며 다양하고 흥미로운 운전 상황, 교통 상황, 흔치 않은 행동들을 포함합니다. 데이터셋(40만 주요 프레임)에는 140만개의 카메라 이미지, 39만개의 라이다 정보, 140만개의 레이더 정보, 140만 개의 물체 bounding 박스가 포함되어 있습니다. 추가로 2020년 7월에 nuScenes-lidarseg를 공개하였는데, 4만개의 프인트 클라우드와 1000개의 장면에 14억개의 포인트가 포함되어 있.. 공감수 5 댓글수 2 2021. 4. 4.
  • [LiDAR] clustering LiDAR에 쓰이는 군집화 코드를 보았습니다 아래의 코드는 K-means clustering으로, 물체를 빠르게 찾기 위해 채택한 것으로 생각합니다. K-means clustring 설명은, 그림과 함께 이해하기 쉬운 글을 참고하세요. https://ratsgo.github.io/machine%20learning/2017/04/19/KC/ K-평균 군집화(K-means Clustering) · ratsgo's blog 이번 글에서는 K-평균 군집화(K-means Clustering)에 대해 살펴보겠습니다. (줄여서 KC라 부르겠습니다) 이번 글은 고려대 강필성 교수님과 역시 같은 대학의 김성범 교수님 강의를 정리했음을 먼저 밝 ratsgo.github.io KUUVe는 velodyne vlp-16을 사용.. 공감수 1 댓글수 0 2021. 3. 22.
  • [두들낙서] 상속에서의 형변환 업캐스팅 - 자식 클래스 포인터에서 부모 클래스 포인터로 형변환을 할 수 있다 - 묵시적으로 일어난다 주의 부모 클래스와 자식 클래스의 배열 크기를 고려해야 한다 형변환은 포인터를 사용하기 때문 ex) class Animal { public: float xpos = 1; float ypos = 2; }; class FlyingAnimal : public Animal { public: float zpos = 3; }; void printAnimals(Animal *a, int n) { for (int i = 0; i < n; i++) { cout 공감수 0 댓글수 0 2021. 3. 6.
  • [두들낙서] 상속 상속 - 상위 클래스의 멤버 변수와 메소드를 하위 클래스에서 사용할 수 있도록 한다 주의 상위 클래스에서 하위 클래스의 멤버 변수와 메소드 사용이 불가능하다 ex) class Base { public: void bFunc() { } int bNum; }; class Derived : public Base { public: void dFunc() { } int dNum; }; 부모 클래스 - 자식 클래스로 상속을 해준 상위 클래스 자식 클래스 - 부모 클래스로 부터 멤버 변수와 메소드를 상속받은 하위 클래스 - 부모 클래스의 멤버 변수와 메소드에 추가 변수와 메소드를 더한다 주의 자식클래스가 부모클래스에 속해있다 부모클래스가 더 큰 범위의 클래스다 접근 제어 - 외부접근은 제한되지만 자식 클래스에서 접근은.. 공감수 0 댓글수 0 2021. 3. 4.
  • [두들낙서] 묵시적 형변환 묵시적(암시적) 형변환 (implicit conversion) - 객체에 변환 생성자가 있다면, 형변환을 별도로 하지 않아도 입력이 된다 주의 어떠한 형태로 변환될지 애매한 상태일때는 명시적 형변환을 이용해준다 문법상 int, double 둘 다 가능할 때 ex) class Item { Item(int num) : num(num) { } } 형변환을 시켜줄 수 있는 생성자면 모두 변환 생성자다 Item i3 = 3; 3이 int값이지만, 형변환을 명시하지 않아도 상단의 생성자를 바탕으로 형변환을 시켜준다 명시적 형변환 (explicit conversion) - 객체에 변환 생성자가 있어도, 형변환을 별도로 할 수 있다 ex) class Item { Item(int num) : num(num) { } } .. 공감수 0 댓글수 0 2021. 3. 4.
  • [두들낙서] 객체 복사 얕은 복사 - 주소값만 복사한다 주의 주소값만 복사하면 에러를 일으킬 수 있다 ex) int *a = new int(5); int *b = new int(3); a = b; delete a; 3을 삭제한다 delete b; 삭제된 부분을 삭제하기 때문에 에러가 난다 깊은 복사 - 값을 복사한다 - 얕은 복사로 인한 오류를 방지하기 위해 깊은 복사를 쓰는 것이 좋다 ex) int *a = new int(5); int *b = new int(3); *a = *b; delete a; 5가 있던 위치에 있는 3을 삭제한다 delete b; 기존 3을 삭제한다 복사 생성자 - 객체를 생성할 때 다른 객체를 복사한다 - 객체를 복사할 때, 멤버 포인터에서 얕은 복사가 일어나기 때문에 오버로딩해준다 ex) Strin.. 공감수 0 댓글수 0 2021. 3. 4.
  • [두들낙서] 동적 할당 동적 할당 - 프로그램 실행 중에 변수를 메모리에 할당하는 것 - new와 delete를 이용해서 생성, 해제한다 new - 임의의 메모리 위치를 지정해 값을 넣고 주소값을 반환한다 ex) int *a = new int(5); int *arr = new int[100]; delete - 메모리 할당을 해제한다 ex) delete a; delete[] arr; 공감수 0 댓글수 0 2021. 3. 4.
  • [두들낙서] 클래스와 객체 클래스 - 특정한 용도를 수행하기 위한 변수와 함수를 모아 둔 틀이다 자료형으로 볼 수 있다 - struct는 public 선언이, class는 private 선언이 기본이다 private - 클래스 내에서 private로 선언된 개체는 외부에서 접근이 불가능하다 클래스에서 선언되는 함수로만 접근 가능하다 ex) class TV { private: bool powerOn; int channel; int volume; } public - 클래스 내에서 public으로 선언된 개체는 외부에서 접근이 가능하다 private로 선언된 개체와 구분을 위해 사용한다 - private와 사용방법은 같다 객채 - 클래스라는 틀을 이용하여 찍어낸 개체(변수, 메모리상의 공간)이다 - 변수를 선언해 주듯이, 선언을 해주면.. 공감수 0 댓글수 0 2021. 3. 4.
  • [두들낙서] C++ 스타일 문법 namespace - 사람의 성과 같이, 네임스페이스는 하위 변수, 함수들을 구분할수 있도록 해준다 - 사용 표현은 '(namespace)::(변수 또는 함수)'다 - 중첩 가능하다 - 네임스페이스 안에 있는 함수에 사용되는 변수는, 명시하지 않아도 네임스페이스의 변수를 사용한다 - 네임스페이스 선언과 정의를 떼어서 쓸 수 있다 처음 선언을 해주면 언제든지 정의를 별도로 해줄 수 있다 - using namespace를 사용하면, 명시하지 않아도 해당 네임스페이스로 인식한다 주의 네임스페이스 안에 있는 함수에 사용되는 변수가 다른 네임스페이스를 명시한다면, 명시된 변수를 사용한다 ex) namespace doodle { int n; void set() { n = 20; } } C언어와 다른점 1. 변수 선.. 공감수 0 댓글수 0 2021. 3. 3.
  • [두들낙서] 상수 상수 - 변하지 않는 수 - 주로 대문자로 선언한다 const - 메모리에 저장되는 변수를 변경할 수 없도록 한다 ex) const float PI = 3.141592; macro - 메모리에 별도로 저장되지 않는 상수를 정의한다 - 코드를 정의할 수 있다 주의 상수명에 띄어쓰기는 불가능하다 주의 연산을 정의할 때 안전을 위해 매개변수 별로 괄호를 쳐줘야 안전하다 X*X에 A-1을 대입하면 A-1*A-1로 -1이 된다 ex) #define PI 3.141592 #define PRINT_HELLO printf("Hello"); enum - 원소들에 자동으로 번호를 붙여준다 - 상태를 사용하는 코드를 짤때 유용하다 주의 중간에 임의로 숫자를 붙여주면, 그 숫자부터 이어진다 0 1 5 6 ... ex) enu.. 공감수 0 댓글수 0 2021. 3. 1.
  • [두들낙서] 구조체 typedef - 기존 자료형에 별명을 붙인다 - typedef 자료형 이름 순으로 선언한다 주의 배열에 사용하면 선언부에만 대괄호를 쓰고, 사용할 때는 대괄호를 쓰지 않는다 주의 포인터를 만들때 선언부에만 *를 쓰고, 사용할 때는 *를 쓰지 않는다 ex) typedef int Int32; typedef int Pair[2]; Pair point = {3, 4}; int point[2] = {3, 4};로 인식한다 구조체 - 중괄호 내부의 요소들을 갖춘 자료형이다 - 중괄호로 초기값을 설정해 줄 수 있다 - 주로 전역변수로 선언해준다 - 구조체의 메모리 크기는 중괄호 안 자료형들의 메모리 크기의 합과 같다 주의 포인터를 사용할 때 괄호에 유의해야 한다 예제에서 확인 주의 구조체도 자료형이기 때문에 cal.. 공감수 0 댓글수 0 2021. 3. 1.
  • [두들낙서] 함수 함수 - 함수를 호출하면 중괄호 내의 코드들을 실행시키고, 호출 전으로 돌아간다 - 자료형과 함께 함수명을 붙이고 중괄호안에 코드들을 적는다 - printf와 scanf 등도 하나의 함수다 return - 함수에서 호출시에 자료형에 맞는 지정된 변수나 연산값을 반환한다 함수 자료형이 int라면 int값만 반환할 수 있다 - 값을 반환하면 실행중이었던 함수는 종료된다 반복문이라도 함수 내에서 발생했다면 종료된다 - return을 쓰지 않아도 함수는 종료될 수 있다 다만, 반환되는 값은 없다 주의 return 다음의 코드들은 실행되지 않는다 주의 함수의 자료형이 void라면 return할 수 없다 전역변수 - 함수 밖에서 선언된 변수로 모든 함수에서 접근이 가능하다 지역변수 - 하나의 함수안에서 선언된 변수.. 공감수 0 댓글수 0 2021. 3. 1.
  • [두들낙서] 포인터 포인터 - 변수의 주소를 저장하는 변수다 - 포인터는 가리킬 변수의 형, '*', 포인터 이름 순으로 선언한다 - 포인터 앞에 '*'를 입력하면 포인터가 가리키는 변수의 값을 나타낸다 *ptr_a == a - 포인터에 1을 더하면 포인터 주소에 지정된 형의 크기만큼 더해진다 int의 포인터면 4가 더해진다 - 배열에서 포인터에 1을 더하면 다음 원소를 가리킨다 &a[0] + 1 = &a[1] 주의 변수의 주소는 상황마다 달라질 수 있으므로 절대적인 값을 가지지 않는다 ex) int a = 20; int *ptr_a; ptr_a = &a; 위의 2줄을 int *ptr_a = &a로 구현 가능하다 *ptr_a = 10; a의 값이 10이 된다 배열과 포인터 관계 정리 - ptr == &ptr[0] - *pt.. 공감수 0 댓글수 0 2021. 3. 1.
    문의안내
    • 티스토리
    • 로그인
    • 고객센터

    티스토리는 카카오에서 사랑을 담아 만듭니다.

    © Kakao Corp.