임베디드

임베디드

  • 분류 전체보기 (1142)
    • PL (150)
      • C++ (108)
      • Python (39)
      • Java (3)
      • Kotlin (0)
    • 알고리즘 (462)
      • 암기 (91)
      • 백준 (328)
      • 삼성 (17)
      • 종만북 (4)
      • 프로그래머스 (22)
    • 임베디드 (411)
      • 하드웨어지식 (12)
      • ATmega128 (98)
      • 32F429IDISCOVERY (57)
      • 임베디드리눅스 (15)
      • 리눅스커널스터디16기 (2)
      • 리눅스시스템프로그래밍 (97)
      • 운영체제 (26)
      • 컴퓨터구조 (4)
      • dd (1)
      • ubuntu (81)
      • opencv (18)
    • 드론 (99)
    • TIP (12)
  • 홈
  • 태그
  • 방명록
RSS 피드
로그인
로그아웃 글쓰기 관리

임베디드

컨텐츠 검색

태그

#linuxbirthday_a_message_from_Seoul_Korea !!

최근글

댓글

공지사항

아카이브

PL/C++(108)

  • 포인터로 매개변수 넘겨서 메모리 할당 시 주의할 점

    2019.11.15
  • C++ 위임생성자

    2019.11.14
  • 함수포인터

    2019.11.13
  • 함수포인터가 쓰이는 경우

    2019.11.13
  • 포인터 배열과 배열 포인터

    2019.11.13
  • malloc/free와 new/delete 차이

    2019.11.12
포인터로 매개변수 넘겨서 메모리 할당 시 주의할 점

대표적으로 연결리스트 구조로 큐를 만드려고 할 때, 보통 ref 코드를 보면 주소값을 반환하는 init 함수를 만들어서 할당하는 경우들이 대부분이다. 아래와 같이 말이다. 그러면 매개변수로 포인터 변수를 넘겨서도 가능하지 않나? struct QNode* newNode(int k) { struct QNode* temp = (struct QNode*)malloc(sizeof(struct QNode)); temp->key = k; temp->next = NULL; return temp; } void enQueue(struct Queue* q, int k) { // Create a new LL node struct QNode* temp = newNode(k); .... } 가능은 하지만 주의할 점이 있다. C언..

2019. 11. 15. 02:29
C++ 위임생성자

다른 생성자를 호출해서 사용하는 생성자를 위임생성자라고 한다 [참고] http://www.qaupot.com/wordpress/?p=2385 다만 위임 생성자로 초기화를 한다면, 다른 변수에 대해서는 initialize member를 사용할 수 없다. 따라서 중괄호 내부에서 this를 사용해서 초기화를 마쳐야만 한다

2019. 11. 14. 15:05
함수포인터

함수포인터는 함수의 주소를 담는 변수로 다음과 같이 쓰인다 #include void func(int a) { printf("value of a is %d\n", a); } int main(void) { void (*p)(int); p = func; p(3); void (*q)(int) = &func; (*q)(4); return 0; } q를 선언해서 사용할 때 &를 지워서 사용할 수 있다. 함수의 이름은 즉 함수의 주소를 가리키기도 한다 #include void func(int a) { printf("value of a is %d\n", a); } int main(void) { void (*p)(int); p = func; p(3); void (*q)(int) = func; q(4); return 0;..

2019. 11. 13. 23:49
함수포인터가 쓰이는 경우

함수포인터는 함수의 주소를 가리키는 포인터다. 일반적으로 다음과 같을 때 사용한다 반환형과 매개변수가 같은 함수의 주소를 가리키게 된다 #include #include typedef struct hello { void (*print_hello)(void); } Hello; void hello(void) { printf("hello world\n"); } int main(void) { Hello *h = (Hello *)malloc(sizeof(Hello)); h->print_hello = hello; h->print_hello(); return 0; } 보통 C언어는 객체지향 문법을 지원하지 않는다고 알려져 있다. 하지만 C언어에서도 구조체와 함수 포인터를 활용하면 충분히 객체지향으로 프로그래밍을 할 수..

2019. 11. 13. 21:16
포인터 배열과 배열 포인터

포인터 배열과 배열 포인터은 비슷한 느낌을 주지만 분명히 다른 표현이다 선언 자체에서 다른데, 포인터 배열은 포인터가 여러 개 포함된 배열을 의미한다. 배열 포인터는 배열을 지칭하는 포인터로 보면 된다 포인터 배열은 int *p[3]과 같이 int *p[0], int *p[1], int *p[2] int형 자료형의 주소를 가리킬 수 있는 포인터 변수가 3개 있는 것을 알 수 있다. 배열 포인터는 포인터 배열과 선언이 유사한데 소괄호를 붙인다는 점에서 다르다. 즉 int (*p)[3]처럼 선언을 하는데 이는 int 형 배열의 크기를 3을 갖는 배열의 시작 주소를 가리키게 된다

2019. 11. 13. 16:23
malloc/free와 new/delete 차이

malloc/free와 new/delete의 공통점은 heap 영역에 메모리를 할당하고 해제하는 함수다 기본적으로 태생을 살펴보면 malloc/free는 glibc 라이브러리 함수다 하지만 new/delete는 특정 헤더파일 안에서 동작하는 함수가 아니라 기본적으로 C++ 언어에서 제공되는 연산자다 둘의 가장 큰 차이점은 malloc/free는 클래스의 생성자/소멸자를 호출하지 못하지만, new/delete는 호출한다는 점이다 new/delete로 생성하면 생성자/소멸자가 모두 호출되는 점을 알 수 있다 #include #include using namespace std; class A { private: int num; public: A() { num = 3; cout

2019. 11. 12. 11:43
1 2 3 4 5 ··· 18
티스토리
© 2018 TISTORY. All rights reserved.

티스토리툴바