반응형
반응형
공용체 (union) 구조체 struct와는 오직 한가지가 다르다. 모든 구조체 변수가 하나의 메모리 공간을 공유한다. (컴퓨터의 그 메모리) 모든 멤버 변수가 같은 메모리를 공유하기 때문에, 공용체는 한 번에 하나의 멤버 변수밖에 사용할 수 없다. (위 그림을 참고하면 이해하기 쉬울 것 이다.) 예제(16진수 출력) 리틀엔디안에 의해 다음과 같은 결과가 발생한다. #include union A{ int a; short b; char c; }; int main(){ union A z; z.a=0x12345678; printf("%x",z.a); //결과: 12345678 printf("%x",z.b); //결과: 5678 printf("%x",z.c); //결과: 78 } //z.c를 16진수로 출력했을..
구조체 C언어의 기본 타입을 가지고 새로 정의할 수 있는 사용자 정의 타입 구조체는 기본 타입만으로는 나타낼 수 없는 복잡한 데이터를 표현할 수 있다. 배열이 같은 타입의 변수 집합이라고 한다면, 구조체는 다양한 타입의 변수 집합을 하나의 타입으로 나타낸다. 이때 구조체를 구성하는 변수를 구조체의 멤버 또는 멤버 변수라고 칭한다. 예제 struct computer { char cpu[25]; char motherboard[30]; int gpu; } desktop; typedef 설명1 이미 존재하는 타입에 새로운 이름을 붙일 때 사용한다. 구조체 변수를 선언하거나 사용할 때에는, 매번 struct 키워드를 사용하여 구조체임을 알려야 한다. 하지만 typedef를 이용하여 구조체에 새로운 이름을 선언(=..
포인터 메모리의 주소값을 저장하는 변수(=포인터 변수) 포인터는 주소값을 저장 int a = 9; // 변수선언 int *p = &a; // 포인터선언 '포인터' 에는 '주소'를 담는다. *은 '참조연산자' int q = 1; // 변수선언 int *p = &q; // 포인터선언 int *pp = &p; // 포인터 참조 포인터는 주소를 가리키고 있기 때문에, int z[] = {3,1}; int *p = &z; printf("%d",p+1); //출력 값: 1 이처럼 주소+1에 위치한 값을 그대로 인지하게 된다. 주소 ex) 0x08041234
함수 하나의 특별한 목적의 작업을 수행하기 위해 독립적으로 설계된 프로그램 코드의 집합. C언어에서 함수는 크게 표준 함수와 사용자 정의 함수로 구분할 수 있다. 함수를 사용하는 이유 1. 가장 중요한 이유는 '프로그래밍의 반복을 최소화'하기 위함이다. 2. 코드의 가독성이 좋아진다. 3. 코드에서 문제 발생 or 기능 변경 필요 시, 간단하게 수정가능하다. 기본 예제 int sum(int x ,int y){ int sum = x + y; return sum; } int main(){ int result = sum(3,5); printf("%d",result); } 함수가 반환할 수 있는 값은 1개를 넘지 못한다. 잘못된 사용 예제1 (main함수 이후, 사용자 정의함수 sum 선언) int main()..
1주차(03.09) : Visual Studio 2022 설치 및 소스파일 생성, 입출력하기 2주차(03.16) : 자료형(int,float,double,string,char 등등..) 학습 및 연산하기 (3.6 진도) 3주차(03.23) : 비트연산자 학습하기, 조건문(if,else) 학습하기, + switch문 4주차(03.30) : 반복문 (for,while,do while) 학습하기 (3.16 진도) 5주차(04.20) : 1차원,2차원 배열(array) 학습하기 6주차(04.27) : 재귀함수 학습하기(재귀적 호출) 7주차(05.04) : 주소값 개념 학습하기 8주차(05.11) : 포인터 학습하기 3.16 스터디 내용 -조건문 (if else) -반복문 (for문) #include int ma..
3.9 C스터디 과제 1번 #include int main() { int a,b; scanf_s("%d %d", &a, &b); printf("%d", a-b); } 2번 #include int main() { int a,b; scanf_s("%d %d", &a, &b); printf("%d", a*b); } 3번 #include int main() { float a,b; scanf_s("%d %d", &a, &b); printf("%f", a/b); }