공용체
union 키워드를 사용하여 선언하며, 한 가지를 제외한 모든 면에서 구조체와 같다. 바로 모든 멤버 변수가 하나의 메모리 공간을 공유한다는 점만이 다르다.
모든 멤버 변수가 같은 메모리를 공유하므로, 공용체는 한 번에 하나의 멤버 변수 밖에 사용할 수 없다.
공용체는 순서가 규칙적이지 않고, 미리 알 수 없는 다양한 타입의 데이터를 저장할 수 있도록 설계된 타입이다.
열거형
하나의 이름으로 서로 관련있는 정수 값을 갖는 상수 집합
여러개의 값 리스트를 하나의 이름으로 코드 상에 묶어서 관리할 수 있는 장점
열거형 사용방법
enum키워드를 사용
enum 열거형명{
열거형변수1 = 기본값1,
열거형변수2 = 기본값2,
열거형변수3 = 기본값3
};
프로그램이 실행되기 위해서 메모리가 필요하다. 컴파일러는 컴파일 시점에서 소스코드를 읽고, 변수 타입들의 크기에 따라 메모리를 할당한다.
이처럼 프로그램이 실행되기 전, 컴파일 시점에 소스 코드를 읽고 메모리 공간을 확보하는 것을 정적 할당이라고 한다.
그렇다면 동정할당은 컴파일 타임이 아닌 프로그램이 실행되는 중인 런타임에 필요한 만큼의 메모리 공간을 확보하는 것을 의미한다.
그때 그때 필요한 만큼만 메모리 공간을 확보하고, 다 사용했다면 free시켜 줌으로써 메모리 공간을 해체함으로서 한정된 메모리 공간을 효율적으로 사용할 수 있게 되는 것이다.
malloc()
void*malloc(size_t size);
-size 바이트만큼의 메모리 반환
-메모리가 없거나 실패하면 NULL반환
-반드시 free()와 함께 함수와 사용
#include <stdlib.h>
int main(void){
size_t i;
int* nums = malloc(10*sizeof(int)); //10*4=40바이트 할당 해주세요
for(i=0; i<10; i++)[
nums[i] = i *10;
}
free(nums);
}
동적할당 문자열 처리하기
1. 문자열을 입력받기 위해서 충분한 크기의 문자 배열을 선언
2. 문자열을 입력
3. 입력 받은 문자열의 크기를 계산한 후, 그 공간만큼 동적 할당받는다.
4. 할당받은 공간에 문자열을 대입한다.
main()함수의 원형
1. c언어의 프로그램 진입점이다.
-c언어로 작성된 프로그램은 main()함수로 시작해서 main()함수로 끝난다.
2. main()함수의 반환형식은 int 타입이다.
c표준에서는 main()함수의 반환형식은 int이외에는 어떤 것도 허용하지 않는다고 기재되어 있음.
main()함수 명령행 인자
void: 명령행 인자가 없는 경우
argc: 명령형 인자의 개수
envp: 시스템의 환경 출력
'C언어' 카테고리의 다른 글
C언어 <조건부 컴파일> (0) | 2023.08.05 |
---|---|
C언어 <메크로 함수> (0) | 2023.08.05 |
C언어 <구조체> (0) | 2023.08.05 |
C언어 <가변인자> (0) | 2023.08.05 |
C언어 <전치행렬> (0) | 2023.08.05 |