본문 바로가기

C4

[C언어] 함수 포인터 작성 방법, 사용 목적, 활용 정리 [1]함수 포인터란? 함수 포인터는 기존의 주소를 저장하는 변수인 포인터와 비슷하게 함수의 주소를 저장하는 변수입니다. 변수를 선언함과 동시에 메모리에 변수를 위한 공간이 생깁니다. 함수또한 메모리 공간을 차지하기 때문에 주소를 이용하여 함수를 가리킬 수 있습니다. 함수 포인터 선언 방법 int (*funcPtrOne)(int) = funcPtrTwo; // 함수의 리턴값 자료형 int, ()안에는 매개변수 자료형만 작성 (매개변수 이름 작성할 필요없음) // 함수의 이름 작성 시 함수의 주소를 저장하기 때문에 *기호를 왼쪽에 작성 [2]함수 포인터 사용 목적 함수의 매개변수로 일반 자료형 데이터(int, float, double 등)를 전달할 때 데이터의 크기가 크지 않다면 데이터 자체를 함수의 인자로.. 2021. 11. 3.
[C기초 플러스] 구조체 포인터 정리(선언,초기화) 구조체 포인터 선언과 초기화 1. 구조체 포인터 선언 struct guy *him; /*구조체를 가리키는 포인터*/ 새로운 구조체를 생성하지 않는다. 새로운 구조체를 생성하지 않지만, 구조체 포인터 자체 크기는 메모리에 할당된다. 기존의 guy형 구조체를 가리키도록 할 수 있다. barney이 guy 형의 구조체를 갖는다면, 아래와 같이 사용할 수 있다. 2. 구조체 포인터 초기화 him = &barney; 구조체 변수 선언 (struct book library;)을 하면 구조체 안 멤버들에게 기억 공간을 할당한다. 단순 구조체 설계는 메모리를 할당하지 않는다. 구조체의 멤버 가리키는 방법-2 1. -> 연산자 (arrow operator) him-> income Indirect member(ship) .. 2021. 10. 6.
[C언어] const와 포인터 활용 정리 const 예약어가 const int num = 10; 으로 쓰인다면 num변수에 저장된 값을 다른 값으로 변경불가된다. 이를 포인터와 연관시켜 보자. 다음 코드를 본인의 Visual Studio로 옮겨서 에러 발생위치를 확인해 보면 이해가 될 것이다. #include int main(void) { int num = 20; int addr = 100; // 1. (*변수)를 상수 취급 const int* ptr1 = #//[1] 포인터가 가리키는 '값' 변경 시 에러 발생. 주소변경은 가능 *ptr1 = 30;// [1] 예시 값 변경 불가 ptr1 = &addr;// [1] 예시 주소 변경 가능 int const* ptr2 = # *ptr2 = 30;// [1] 예시. 값 변경 불가. p.. 2021. 9. 20.
[C기초 플러스] strcpy()함수 개념 및 기능 정리 (널 문자 복사) 형식 strcpy(char * dest, char* source) 기능 두번째 전달인자(source)가 가리키는 문자열이 첫번째 전달인자(dest)가 가리키는 배열로 복사된다. 대입문에서의 순서와 같이 오른쪽이 왼쪽에 대입. 리턴값 첫번째 전달인자의 값 (문자의 주소) 특징 첫번째 포인터(dest)는 그 문자열(source)을 저장할 수 있을 만큼 충분한 기억공간을 확보하고 있는, 배열과 같은 데이터 객체를 가리켜야한다. 첫번째 전달인자가 반드시 배열의 시작을 가리킬 필요는 없다. 예시 /* copy1.c--strcpy() 사용*/ #define _CRT_SECURE_NO_WARNINGS//strcpy()가 unsafe해서 빌드 오류 뜨지 않게 하기 목적 #include #include /*strcpy(.. 2021. 9. 19.