Brise

C언어의 변수형 정리 본문

프로그램/C,C++

C언어의 변수형 정리

naudhizb 2015. 8. 14. 00:53
반응형


--

보이드(void)

변수형이 지정되지 않은 경우. 일반적으로 포인터 연산에 사용됨.


void(1 워드)


e.g.) void point;



정수형(signed)

음의 정수, 0, 양의 정수를 표현할 수 있는 변수형


char (8 비트)

short (16 비트)

int (1 워드)

long (32 비트)

long long (64 비트)


* int의 경우 16 또는 32비트이다.


e.g.) char variable = 0;




양의 정수(unsigned)

0과 양의 정수를 표현할 수 있는 변수형


unsigned char (8 비트)

unsigned short (16 비트)

unsigned int (1 워드)

unsigned long (32 비트)

unsigned long long (64 비트)


* unsigned int의 경우 16 또는 32비트이다.


e.g.) unsigned char variable = 0;




>> 어떤 자료형이 어떤 비트수를 가지고 있는지 외우기 어렵다면

#include <stdint.h>를 포함시켜 아래와 같이 변수선언을 간편하게 할 수 있다.


e.g.) 

#include <stdint.h>

uint8_t variable=0; // unsigned char와 같은 변수형

int32_t variable2=0; // long과 같은 변수형






부동소수점(floating point)

지수부와 가수부로 나뉘어 수를 표현하는 변수형, 작은 수부터 큰 수까지 넓은 범위를 표현할 수 있고,

오버플로우의 위험성이 낮지만, 언더플로우의 위험성을 가지고 있으며, 정확한 값의 계산이 어렵다.

또한 FPU가 탑재되지 않은 경우 심각한 연산속도 저하를 가져올 수도 있다.


float(32 비트)

double(64 비트)


* 아키텍쳐에 따라 32비트만을 지원할 수도 있다.



배열(Array)

위에 언급되어 있는 변수형들을(같은 변수형끼리) 나열하여 사용할 수 있는 변수. 인덱스는 0번부터 지정되며, 제대로 사용하기 위해서는 포인터에 대한 이해가 필수적이다.

인덱스는 0번부터 시작하는 것이 C언어의 특징이다. 


e.g.)

char array[10]={0,1,2,3,4,5,6,7,8}; // char 10개짜리 배열을 선언 마지막 인덱스(10번째)는 초기화되지 않았으므로 0으로 선언된다.

array[0] = 2; // 0번 인덱스(0)의 값을 2로 바꿈.


int array2[]={1,2}; // 사이즈를 비워둘 경우 초기화가 되는 양만큼만 선언된다 (사이즈 2)


unsigned int a[3][4]; //4개짜리가 3개 있는 배열을 선언


<출처 : http://kama1204.tistory.com/entry/%EB%B0%B0%EC%97%B4-%EC%9D%B4%EC%B0%A8%EC%9B%90-%EB%B0%B0%EC%97%B4>





구조체(struct)

위에 언급되어 있는 변수형들을(다른 변수형들도) 묶어서 선언할 수 있는 방식. 일반적으로 typedef와 같이 묶어서 간편하게 선언하는 경우가 많다.


e.g.)

typedef Name1 Name2; // Name1을 Name2로 대체하여 선언


struct S {

int x;

int y;

}S1;

// int형 변수 x와 y가 들어간 구조체 S를 정의하고 S1이라는 이름의 struct S형 변수를 선언


typedef sturct SS {

int a;

char b;

} SS1;

// a와 b가 들어간 구조체 SS를 정의하고 typedef구문을 이용하여 struct SS형의 변수를 SS1으로 대체선언


--> 

struct SS m1;

SS1 m2;

와 같이 선언 가능




나열형,열거상수 (enum)

정수만을 나열하여 선언 가능한 변수형식. 숫자를 따로 선언하지 않아도 자동적으로 증가하는 것이 특징이다.

e.g.)

enum (Name) { a,b,c=10,d=10,e};

a=0

b=1

c=10

d=10

e=11


typedef enum rome {a,b,c,d,e} alphabet;

enum rome aa = a;

alphabet bb = b;


*c언어의 경우 제한이 느슨하기 때문에 다른 나열형에서의 값도 넣는게 가능하므로 주의해야한다. c++의 경우 enum class로 해결한듯하다.



--




반응형

'프로그램 > C,C++' 카테고리의 다른 글

2차원 배열 동적할당  (0) 2015.12.19
2차원 포인터의 값과 주소 접근 방식  (0) 2015.12.12
C언어 표준매크로  (0) 2015.08.20
Call by value, Call by reference  (0) 2015.05.11
2차원 배열 함수 호출 예제  (0) 2015.05.11
함수 포인터 배열 예제  (0) 2015.02.13
Efficient C coding  (0) 2014.09.30
Comments