본문 바로가기

Programming/C9

13. 구조체 자료형 기초자료형; int, char, double, void … 파생자료형; 배열, 포인터, 구조체, 공용체 사용자정의 자료형; typedef, enum 배열과 달리 사이즈나 자료형 달라도 됨 구조체의 이름(:태그) ; 변수명이 아님 ← 틀만 만들 땐 메모리 할당 안 됨 안에 변수를 적어야 할당됨 struct 구조체명 { //구조체 선언 // 멤버들 int number; // 1000 char name[10]; // 1004 double grade; // 1014 }; // 마지막에 세미콜론 o 구조체의 초기화 struct student s1 = {24, "Kim", 4.3}; 구조체 멤버 참조 s1.grade = 3.8; 예제1 #include struct student { //구조체 정의 int n.. 2023. 10. 19.
12. 문자열 NULL문자 : 문자열의 끝을 나타냄 문자열이 어디서 종료되는지 알도록 #include int main(void) { char str1[6] = "Seoul"; char str2[3] = { 'i', 's', '\\0' }; char str3[] = "the capital city of Korea."; printf("%s %s %s\\n", str1, str2, str3); return 0; } B : 16진수 11 ‘B’ :문자, 0x42 “B” :문자열 0x42 \0 버퍼 : 중간 단계의 메모리 ex) 키보드 누르면 키보드 안에 버퍼가 있어서 저장 입출력 함수 설명 int getchar(void) 하나의 문자를 읽어서 반환 void putchar(int c) 변수 c에 저장된 문자 출력 int _ge.. 2023. 10. 19.
11. 포인터 💡 endian := byte order 면접 때 자주 물어봄 (MSB쪽) 0x12345678 (LSB) little endian in x86 → 78 56 34 12 big endian in M68K → 12 34 56 78 통신에서는 문제가 될 수 있어 TCP/IP에서는 바꿈 &a : a 변수의 주소 So, &변수 int* pointer; 포인터변수 선언 //포인터는 첫 주소만 읽으므로 얼마나 읽어올지 타입 적어줘야 함 *pointer : (간접 참조 연산자) 포인터에 해당하는 값 So, *주소 ✅ 메모리 단위 : byte 주소 하나 : 1byte = 8bit → 00 ~ 최대 FF = 1111 1111 32bit cpu의 최대 메모리 용량 4GB → 32bit 주소 : 0xFFFF FFFF 4bit.. 2023. 10. 19.
10. 배열 배열 한 번에 여러 개 값 저장할 수 있는 공간 받을 수 있음 인덱스는 정수형, 할당하지 않은(벗어나는) 인덱스면 os가 죽임 배열주소 = 배열 첫 인덱스 값 주소 ex int A[5]; → 주소 : 10, 14, 18, 22, 26. 메모리 : 0a 00 00 00 14 00 00 00 … 크기 선언 안 하면 [ ], 초기 선언 개수로 정해짐 배열 선언 외 나머지 초기값은 0 배열 초기화 안 하면 garbage 서로 다른 배열은 원소 하나씩 비교해야 함 // a==b 이러면 서로 주소 비교됨.. 당연히 다름 #include int scores[] = { 1, 2, 3, 4, 5, 6 }; int i, size; int main(void) { size = sizeof(scores) / sizeof(sco.. 2023. 10. 19.
728x90