본문 바로가기
반응형

C언어6

[C언어] 2차원 배열 파라미터(매개변수)로 넘기기 C언어에서 가장 다루기 까다로운 것중에 하나가 2차원 배열이다. 만들때는 쉽게 만들지만, 이곳 저곳으로 넘기다 보면 이게 지금 포인터인지 함수인지 데이터값인지 헷갈리기 시작하고 에러도 많이 난다. 여러가지 string 으로 되어 있는 2차원 배열을 다른 함수로 넘기는 방법을 알아보자. char* string_table[4][2] = { {"this is one", "this is two"}, {"this is three", "this is four"}, {"this is five", "this is six"}, {"this is seven", "this is eight"} }; 2차원 배열의 정의는 이렇게 하면 된다. 이 예제는 [4][2] 로 만들어진 배열에 각각 문자열, string 이 들어가 있는 .. 2023. 2. 14.
[C언어] 구조체 초기화하는 방법 C언어에서 자주 사용하는 구조체를 초기화 하는 방법은 여러가지가 있고, 주의해야 할 몇가지가 있다. typedef struct{ char cmd_arr[5]; int head; int tail; }AA; 일단 가장 쉽게 구조체를 만들어 보자. cmd_arr[5] 라는 배열을 먼저 적어두고, 그 뒤에 int 형 데이터 2개를 붙혀준다. AA name1 = {.head = 3, .tail = 4 }; name1 이라는 객체를 만들면서 .head, .tail 이라고 적은다음 초기화를 선언할 수 있다. 구조체의 선언에서 순서가 어떻게 되었든 head 와 tail 을 명확하게 나타내기 때문에 의도된 대로 동작한다. printf("%s\n", name1.cmd_arr); //blank printf("%d\n", n.. 2023. 2. 7.
[C언어] 문자열, string 사용하는 방법 embedded C 를 하다보면 자연스럽게 하드코딩으로 시스템의 정보를 입력하는 문자열을 만들게 된다. 두가지 방법으로 할 수 있고, 때에 맞추어 적절히 사용하면 된다. char string1[] = {'A', 'B', 'C', 'D', '\0'}; char* string2 = "EFGH"; 첫번째 방법은 배열로 만들것이고 (마지막에 '\0' 가 꼭 들어가야 한다. 문자열의 마지막이라는 의미) 두번째 방법은 사용하기 쉬운 문법이지만, const 상수 처리가 되어 이후에 수정이 불가능 하다. printf("%s\n", string1); // ABCD printf("%s\n", string2); // EFGH printf("%c\n", string1[1]); //B printf("%c\n", string2[.. 2023. 1. 31.
[C언어] 함수 포인터 배열, 실제 코드로 알아보자 C언어에서 사용하는 가장 어려운 것 중에 하나인 함수 포인터 배열, 실제 코드를 보면서 분석을 해보려고 한다. 3개의 파일로 구성되어 있고, function_test.c 에서 실제 코드를 실행하고 func.c 와 func.h 에서 코드가 구현 되어 있다. /* func.c */ #include "func.h" void print1(void){ printf("function name : %s\n", __func__); } void print2(void){ printf("function name : %s\n", __func__); } void print3(void){ printf("function name : %s\n", __func__); } void print4(void){ printf("function.. 2023. 1. 31.
반응형