일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 42서울
- float
- iF
- docker
- ft_server
- list
- jupyter 단축키
- nginx
- 패킹
- libft
- 42
- While
- 2차원배열
- vs코드 단축키
- 포인터
- 구조체
- else if
- 함수
- 자료형
- C언어
- 동적할당
- phpmyadmin
- 42Seoul
- 42cursus
- Double
- C++
- Class
- for
- cout
- python
- Today
- Total
목록Programming Language (39)
Developer
이벤엔 멤버들이 가장 큰 자료형의 공간을 공유하는 공용체를 알아보자. 공용체 공용체는 구조체와 정의방법이 똑같다. 차이점은 구조체는 멤버변수 각각이 서로 자신의 공간을 차지하고, 공용체는 멤버변수가 공간을 공유한다. 공용체의 정의는 union키워드를 사용하며 아래와 같이 정의한다. union 공용체이름{ 자료형 멤버이름 자료형 멤버이름 자료형 멤버이름 }; 구조체와 마찬가지로 typedef로 별칭을 지정할 수 있고, .(점)을 사용해 멤버 변수에 접근할 수 있으며, 포인터도 사용할 수 있다.물론 포인터로 멤버 변수에 접근하려면 ->(화살표) 연산자를 사용해야한다. 그럼 멤버끼리 공간을 공유한다는 말이 무슨 말인지 알아보자. #include typedef union ex { char c; short..
CPU는 비트에 따라서 메모리 접근 단위가 다르다. 32비트의 컴퓨터는 32비트 단위로, 64비트의 컴퓨터는 64비트 단위로 접근한다. 대부분의 C언어 컴파일러는 CPU가 효율적으로 메모리에 접근할 수 있도록 구조체를 정렬해준다. 그럼 구조체 정렬이 무엇인지 알아보자. 구조체 정렬 #include typedef struct { //구조체 정의 char a; int b; }some; int main() { some c; //구조체 변수 선언 printf("멤버변수 a의 크기 :%d Byte\n", sizeof(c.a)); printf("멤버변수 b의 크기 :%d Byte\n", sizeof(c.b)); printf("구조체 변수 c의 크기 :%d Byte\n", sizeof(c)); return 0; ..
구조체도 다른 자료형과 같이 포인터, 배열을 사용할 수 있다. 구조체 포인터 #include #include typedef struct Student{ char name[30]; //이름 char phone_number[30]; //전화번호 int student_id; //학번 }Student; int main(){ Student s={"김모군","010-xxxx-xxxx",123456}; Student *sp; sp=&s; printf("-> 사용\n"); printf("%s\n",sp->name); printf("%s\n",sp->phone_number); printf("%d\n",sp->student_id); printf("\n역참조 사용\n"); printf("%s\n",(*sp).name); p..
구조체란 서로 다른 자료형의 여러 변수들을 하나의 묶음으로 사용할 수 있게 해준다. 기본 자료형을 조합해서 새로운 자료형을 만든다고 생각하면 된다.학생의 정보를 관리하기 위해 구조체를 사용해 보자. 정보 항목은 이름, 전화번호, 학번 3가지만 하겠다. #include #include struct Student{ char name[30]; //이름 char phone_number[30]; //전화번호 int student_id; //학번 }; int main(){ struct Student s; strcpy(s.name,"김모군"); strcpy(s.phone_number,"010-xxxx-xxxx"); s.student_id=123456; printf("%s\n",s.name); printf("%s\n"..
C에서 제공하는 문자열 함수를 알아보자 문자열 길이 길이는 sizeof를 쓰면 되지 않나? 라고 생각할 수 있지만 만약 10크기의 배열에 "abc"문자열이 들어가 있다고 생각해보자! 실제 문자열 길이는 NULL문자를 제외하고 3이다. 하지만 sizeof연산자를 사용하면 배열의 크기인 10이 나올것이다. 따라서 문자열의 길이를 구해주는 함수가 따로 존재한다. 사용 방법: strlen(문자열포인터); #include #include int main(){ char s[10]="Study"; printf("%d\n",strlen(s)); return 0; } strlen(string length)함수는 string.h 헤더파일에 선언되어 있으므로 string.h를 포함해줘야 한다. 코드1에서 알 수 있듯이 ..
문자열은 말 그대로 문자의 나열이다. 지금까지 char형 변수에 문자를 하나씩 저장하여 사용하였다. char ch='a'; 문자 a를 ch에 할당 문자열은 이러한 문자들의 나열이다. 처음 C를 시작할때 printf함수로 출력한 "Hello World!"또한 문자열이다. 문자는 작은따옴표로 감싸주고 문자열은 큰 따옴표로 감싸주는것을 기억하자! C++에서는 string이라는 문자열을 저장하는 자료형이 따로 존재하지만 아쉽게도 C에서는 문자열을 저장하는 자료형이 따로 존재하지 않는다. C에서는 문자열을 처리하기 위해 포인터와 배열을 사용한다. 물론 char 자료형을 사용하여야 한다. 문자열과 포인터 #include int main(){ char *ch="Study"; printf("%s\n",ch); ..
포인터를 사용해 원하는 시점에 원하는 만큼 메모리를 할당할 수 있는 것을 동적 할당이라고 한다. malloc를 사용해 동적 할당을 할 수 있다. malloc는 stdlib.h헤더에 선언되어 있으므로 stdlib.h를 포함 시켜줘야한다. #include #include int main() { int *ptr; ptr = (int*)malloc(sizeof(int)); if (ptr == NULL)return -1; *ptr = 32; printf("%d", *ptr); free(ptr); return 0; } 코드1을 보면 포인터만 선언되어 있다. 이러한 포인터에 malloc로 int만큼의 크기를 동적 할당해주어 사용하였다. malloc는 아래와 같이 사용할 수 있다. malloc(byte단위 크기) ma..
배열은 같은 자료형의 변수가 여러개 필요할때 변수 선언과 관리 및 처리를 쉽게 도와준다. #include int main(){ int arr[10]; //크기가 10인 int형 배열 선언 int arr1[10]={1,2,3,4,5,6,7,8,9,10}; //선언 및 초기화 arr[0]=1; //arr배열의 0번 위치에 1을 저장 arr[1]=2; arr[2]=3; printf("%d\n",arr[0]); printf("%d\n",arr[1]); printf("%d\n",arr[2]); printf("%d\n",arr1[0]); printf("%d\n",arr1[7]); printf("%d\n",arr1[9]); return 0; } 위의 코드를 보면 대략적인 사용 방법을 알 수 있을 것이다. 배열은 자료..