구조체 리뷰

kenGwon·2024년 2월 22일
0

[Embedded Linux] BSP

목록 보기
18/36

call_dev.c 파일을 보면 중간에 구조체가 등장한다. 그 부분을 제대로 이해하기 위한 짧막한 설명이다.

...
// 구조체다
struct file_operations call_fops = {
    .owner          = THIS_MODULE,
    .llseek         = call_llseek,
    .read           = call_read,
    .write          = call_write,
    .unlocked_ioctl = call_ioctl,
    .open           = call_open,
    .release        = call_release,
};
...

구조체 예제파일

#include <stdio.h>

/* 구조체 '타입'을 선언 */
struct student {
    int num;
    char * name;
};

/* 구조체 '변수'를 선언과 동시에 초기화한 방식 */
struct student test = {
    .num = 1,
    .name = "test"
};

int main()
{
	/* 구조체 '변수' 선언과 동시에  바로 가져다 쓸 수 있음 */
    printf("num : %d, name : %s\n",test.num, test.name); // 선언과 동시에 초기화 했기 때문에 바로 사용가능

	/* 선언된 구조체 '타입'을 이용한 일반적 방식 */
    struct student st = {1, "ksh"}; 
    printf("num : %d, name : %s\n",st.num, st.name);

    struct student sa[2] = {{1, "ksh"},{2,"aaa"}};
    printf("num : %d, name : %s\n",sa[0].num, sa[0].name);
    printf("num : %d, name : %s\n",sa[1].num, sa[1].name);

    struct student * pSt;
    pSt = &st;
    printf("num : %d, name : %s\n",pSt->num, pSt->name);
}

구조체를 선언한 첫번째 방식

struct student의 크기는 8바이트(int 4바이트 + char* 포인터의 주소 4바이트)이다.

구조체를 선언한 두번째 방식

선언과 동시에 변수로 선언하는 형태에서는 .멤버명 = 값 형태로 써줌으로써 선언과 동시에 값을 초기화해줄 수 있다.

profile
스펀지맨

0개의 댓글