Dreaming developer

예비 개발자를 꿈꾸는 서연이의 기록일지

Together, Tomorrow

C,C++/C basic 4

[C 기초] 함수포인터

함수포인터란? 함수를 가리키는 포인터 사실 함수 이름은 포인터이므로 메모리주소가 담겨있다. 따라서 포인터에 함수의 주소를 저장하고 그 함수포인터를 통해 인자로 함수를 주고받거나 호출할수있게된다. 1. 필요성 1) 함수자체의 매개변수, 반환값으로 : 여러사람이 협업할때에는, 누가 어떤 함수를 필요로 할지 모름. 그러나 함수포인터를 정의하고 매개변수로 전달하게 되면 그 함수 내부에서 호출이 가능하게 됨. void func(void (*fp)()) { ... fp(); //함수포인터로 함수 호출 ... } 2) 배열요소로 3)구조체멤버로 :함수포인터를 구조체멤버로 넣고, 그 멤버함수를 추후에 사용자가 원하는대로 커스텀해서 구조체 특성에 맞는 함수를 대입시킬수있다. Java에서 메소드오버라이딩으로 각 객체의 특..

C,C++/C basic 2021.08.31

[C 기초] 구조체포인터

C 언어 코딩 도장: 49.1 구조체 포인터를 선언하고 메모리 할당하기 (dojang.io) C 언어 코딩 도장: 49.1 구조체 포인터를 선언하고 메모리 할당하기 49 구조체 포인터 사용하기 보통 구조체는 멤버 변수가 여러 개 들어있어서 크기가 큰 편입니다. 그래서 구조체 변수를 일일이 선언해서 사용하는 것보다는 포인터에 메모리를 할당해서 사용하 dojang.io 구조체 포인터 구조체의 주소를 담는 포인터. 1.필요성 : 구조체는 멤버변수가 여러개 들어있기때문에 크기가 크다. 그리고 구조체 변수를 일일히 선언하면 사용하지않는 구조체 내의 멤버도 모두 복사한다. 따라서 포인터에 메모리를 할당해서 사용하는 편이 효율적이다. 2. 선언 struct 구조체이름 *포인터이름 = malloc(sizeof(stru..

C,C++/C basic 2021.08.29

[C 기초 ] 동적할당 (malloc,memset)

동적할당이란? 프로그램 실행중에 동적으로 메모리를 할당하는 것 1. 필요성 1) 특정 메모리공간이 쓰이지 않은채로 낭비되는것을 막는다. 사용할때에만 잠시 메모리를 할당했다가 할당한 메모리가 더이상 쓸일이 없게되면, 해당 메모리를 해지시켜 다른곳에서 활용할 수 있게끔 하여 효율적인 리소스 관리를 도울 수 있다. 2) 일반적인 변수나 함수의 경우 stack이라는 메모리 공간에 할당되는데, stack 에 할당된 것들은 범위를 벗어나면 파괴되어 사용할 수 없게 된다. (ex. 특정함수에서 선언한 지역변수는 함수바깥에서 사용할수 X) 하지만 동적할당을 통해 잡은 메모리는 stack이 아닌 heap에 저장되므로 함수 바깥에서도 할당된 메모리가 사라지지 않고 존재할 수 있다. 코드(code) 영역(=텍스트(code)..

C,C++/C basic 2021.08.26

[C 기초] 구조체

C 언어 코딩 도장: 48.1 구조체를 만들고 사용하기 (dojang.io) C 언어 코딩 도장: 48.1 구조체를 만들고 사용하기 구조체는 struct 키워드로 정의합니다. struct 구조체이름 { 자료형 멤버이름; }; 구조체는 정의만 해서는 사용을 할 수가 없습니다. 따라서 구조체도 변수로 선언해서 사용합니다. struct 구조체이름 dojang.io 구조체란? 여러개의 자료형을 묶어 하나로 그룹화하는 사용자 정의 자료형. 1. 선언 및 생성 : 구조체선언은 struct 키워드를 통해 이루어지며, 구초제별로 목적에 맞는 자료형변수들을 선언해주면 된다. 방법 1) basic struct 구조체이름 { 자료형 멤버이름; }; ※ (닫는 중괄호) 뒤에 반드시 ;(세미콜론) 을 붙이는것 잊지 않도록 하기..

C,C++/C basic 2021.08.24