336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

목표 : 

지역 변수와 전역변수를 이해한다.

전역 변수 : 프로그램이 시작할때 생성되어 프로그램이 메모리에서 소멸 되기 전까지 존재한다.

지역 변수 : 괄호 안'{'에서 생성한 시점에서 메모리에 존재하고 괄호안 '}' 만날때 메모리에서 사라진다. 


소스 코드 : main.c

#include <stdio.h>


int g_nMaxValue = 256; // 전역변수 생성과함께 초기화해줘야한다.


int main(void)

{//프로그램 시작점


{

int l_nValue; // 지역변수


l_nValue = 0;

}



//l_nValue = 13; // 호출하면  error 가 됩니다.


printf("g_nMaxValue 의 값 : %d", g_nMaxValue);


return 0;

}



결과 : 




#c언어, #c언어입문, #프로그램입문,  , #전역변수와지역변수 

'Programing - C > C Basic grammar ' 카테고리의 다른 글

050 매크로 함수 이해하기  (0) 2017.07.27
049 선언과 헤더파일 만들기  (0) 2017.07.27
047 함수와 파라메터  (0) 2017.07.27
046 자료형 재정의( typedef )  (0) 2017.07.27
045 열거체(enum)  (0) 2017.07.27
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

목표 : 

putchar를 활용하여 함수를 만들고 그함수에 파라메터(인수값을 문자열 포인터를 받아 출력하고 그 문자열의 길이를 출력해주는 함수를 만들어보자)


소스 코드 : main.c

#include <stdio.h>

int output(char *pString)

{

int len = 0;

char *pPoint = NULL;

pPoint = pString;


while (*pPoint != '\0')

{

putchar(*pPoint);

++pPoint;

++len;

}


return len;

}

int main(void)

{

char* pString = "Hello World!! \n";


printf("pString 길이는 %d \n", output(pString));


return 0;

}



결과

 


#c언어입문, #c언어, #프로그램입문, #함수예제

'Programing - C > C Basic grammar ' 카테고리의 다른 글

049 선언과 헤더파일 만들기  (0) 2017.07.27
048 변수의 유효 범위  (0) 2017.07.27
046 자료형 재정의( typedef )  (0) 2017.07.27
045 열거체(enum)  (0) 2017.07.27
044. 공영체 (union)  (0) 2017.07.27
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

개념 : 

1. 이미 정의된 자료형을 다른 의미의 이름을 부여할때 사용한다.

2. 주록 가독성을위해서 사용된다.


소스코드 : main.c

#include <stdio.h>

#define true (unsigned char)1

#define false (unsigned char)0


typedef unsigned char bool;


int main(void)

{

bool bIsRun = true;


printf(" true의값 %d \n false의 값 %d \n", true, false);


if (bIsRun == true)

{

printf("bisRun 은 true 입니다. \n");

}

else if (bIsRun == false)

{

printf("bisRun 은 false 입니다. \n");

}


return 0;

}



결과

 


#c언어, #c언어입문, #프로그램입문, #typedef

'Programing - C > C Basic grammar ' 카테고리의 다른 글

048 변수의 유효 범위  (0) 2017.07.27
047 함수와 파라메터  (0) 2017.07.27
045 열거체(enum)  (0) 2017.07.27
044. 공영체 (union)  (0) 2017.07.27
043 구조체(struct) 이해하자  (0) 2017.07.27
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

개념 : 

1. 4바이트 정수 형태의 값을 지닙니다.

2. 시작점을 정하지 않으면 0부터 차례대로 시작합니다.

3. 상수값을 가지기 때문에 상태나 const int 나 #define 대신 활용할수 있습니다.



소스코드:

#include <stdio.h>


enum eGameStatus

{

GAME_STATUS_NON,

GAME_STATUS_NUM01,

GAME_STATUS_NUM02,

GAME_STATUS_NUM03,

GAME_STATUS_END

};


int main(void)

{

enum eGameStatus status = GAME_STATUS_NON;


status = GAME_STATUS_NUM01;


switch (status)

{

case GAME_STATUS_NON:

printf("selected GAME_STATUS_NON \n");

break;

case GAME_STATUS_NUM01:

printf("selected GAME_STATUS_NUN01 \n");

break;

case GAME_STATUS_NUM02:

printf("selected GAME_STATUS_NUN02 \n");

break;

case GAME_STATUS_NUM03:

printf("selected GAME_STATUS_NUN03 \n");

break;

default:

printf("selected GAME_STATUS_END \n");

break;

}



return 0;

}


결과




#c언어, #c언어입문, #프로그램입문, #열거체, #enum, 

'Programing - C > C Basic grammar ' 카테고리의 다른 글

047 함수와 파라메터  (0) 2017.07.27
046 자료형 재정의( typedef )  (0) 2017.07.27
044. 공영체 (union)  (0) 2017.07.27
043 구조체(struct) 이해하자  (0) 2017.07.27
042 NULL 포인터 이해하기  (0) 2017.07.27
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

개념 : 

1. 구조체와 동일하게 선언하고 사용한다.

2. 내부적 구조가 가장 큰 변수의 크기만큼의 하나를 할당한다.

3. 내부변수의 메모리 공간을 같이 사용한다.

4. 사용 빈도는 높지 않다.


소스코드 : main.c

#include <stdio.h>


union unValue

{

int  nNum;

float fNum;

char cNum[8];

short sNum;


double  dNum;

long long llNum;

};



int main(void)

{

int count = 0;

union unValue Variable;


for (count = 0; count < 8; count++)

{

Variable.cNum[count] = 'A' + count;

}


printf("%d \n", Variable.llNum);

printf("%d \n", Variable.nNum);

printf("%d \n", Variable.sNum);

printf("%f \n", Variable.fNum);

printf("%f \n", Variable.dNum);

for (count = 0; count < 8; count++)

{

printf("%c \n", Variable.cNum[count]);

}



printf("union nuValue size___________%d \n", sizeof(Variable));


return 0;

}


결과




#c언어입문, #c언어, #프로그램입문, #union, #공영체,

'Programing - C > C Basic grammar ' 카테고리의 다른 글

046 자료형 재정의( typedef )  (0) 2017.07.27
045 열거체(enum)  (0) 2017.07.27
043 구조체(struct) 이해하자  (0) 2017.07.27
042 NULL 포인터 이해하기  (0) 2017.07.27
tack rest 01 ( 로또 프로그램 )  (0) 2017.07.27
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

개념 : 구조체란 사용자 정의 자료형이며 기본 자료형의 조합으로 만들어 집니다.


목표 : 이웃에 대한 공감과 댓글 작성 여부를 저장하는 자료형을 만들어 보자


소스코드 : main.c

#include<stdio.h>

#include<string.h>


#define SZ_BUFFER_MAX 256

#define BOOL unsigned int 

#define DWORD  unsigned int 

#define TRUE 1

#define FALSE 0



struct stNeighbor

{

BOOL bEachOther; // 서로 이웃여부 

DWORD  nDate;// 서로 이웃 맺은 날


char szName[SZ_BUFFER_MAX];

char szID[SZ_BUFFER_MAX];


DWORD nCountComment; // 댓글 작성 횟수

DWORD nCountSympathy; // 공감 작성 횟수


DWORD Numbering;

};


int main(void)

{

struct stNeighbor NeighborData;


NeighborData.bEachOther = TRUE;

NeighborData.nDate = 0;//Data 함수를 사용해야하는데지금은 그냥0으로....


strcpy_s(NeighborData.szName, SZ_BUFFER_MAX, "Mozzi");

strcpy_s(NeighborData.szID, SZ_BUFFER_MAX, "bera***");


NeighborData.nCountComment = 28;

NeighborData.nCountSympathy = 33;


printf("데이터 쓰기 완료.\n");


return 0;

}



결과



#C언어#C언어입문#프로그램입문#구조체만들기#struct




'Programing - C > C Basic grammar ' 카테고리의 다른 글

045 열거체(enum)  (0) 2017.07.27
044. 공영체 (union)  (0) 2017.07.27
042 NULL 포인터 이해하기  (0) 2017.07.27
tack rest 01 ( 로또 프로그램 )  (0) 2017.07.27
041 포인터 이해  (0) 2017.07.27
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
개념 : 
1. 문장의 끝은 문자 '\0' 로 나타낸다.
2. 기본 포인터는 초기화 동시에 NULL 로 한다.
3. NULL 이란 0이다.

목표 : 
상수 문자열을 만들고 문자열의 길이를 알아 내는 코드를 만들어 보자

소스 코드 : main.c

#include <stdio.h>


int length(char* pStr)

{

int cnt = 0;

char* p = NULL;


p = pStr;


while (*p != '\0')

{

if (*p != '\0')

{

++p;

++cnt;

}

}


return cnt;

}


int main(void)

{

char *pString = "Hello World!!";



printf("%s 의 길이는 : %d\n", pString, length(pString));


return 0;

}


결과 :




#c언어입문, #c언어, #프로그램입문, #문자열길이, #NULL, #문자NULL

'Programing - C > C Basic grammar ' 카테고리의 다른 글

044. 공영체 (union)  (0) 2017.07.27
043 구조체(struct) 이해하자  (0) 2017.07.27
tack rest 01 ( 로또 프로그램 )  (0) 2017.07.27
041 포인터 이해  (0) 2017.07.27
040 메모리 이해하기  (0) 2017.07.27
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

목표 : 지금까지 공부한 것과 rand, srand 함수를 이용해서 로또 번호 추첨기를 만들어보자


소스 코드 : 

#include<stdio.h>

#include<windows.h>


#define NUM_MIN 1

#define NUM_MAX 45


#define VERSION 1


char Check(char* pList);


int main(void)

{

unsigned char Number[6] = { 0, };

unsigned char Cmd = 0;

unsigned char Reandom = 0;

unsigned char count = 0;

unsigned char GameMaxCount = 0;

unsigned char Games = 0;

char check = 0;


BOOL bIsRun = TRUE;

BOOL bGameRun = TRUE;


while (bIsRun)

{

srand(GetTickCount());


printf("게임명령어( 숫자 1 ~ 5 , c 종료 ) : ");

Cmd = getchar();

fflush(stdin);//enter키 정보 소멸(엔터도 아스키 코드 값이 있다.)



if (Cmd >= '1' && Cmd <= '5')

{

switch (Cmd)

{

case '1':

GameMaxCount = 1;

break;

case '2':

GameMaxCount = 2;

break;

case '3':

GameMaxCount = 3;

break;

case '4':

GameMaxCount = 4;

break;

case '5':

GameMaxCount = 5;

break;

}


//번호 추첨

while (GameMaxCount > Games)

{


for (count = 0; count < 6; count++)

{

Reandom = rand() % NUM_MAX + NUM_MIN;

Number[count] = Reandom;

}


//중복 검사


check = Check(Number);

if (check >= 0 && check <= 5)

{

continue;

}


//번호 출력 

for (count = 0; count <6; count++)

{

printf("%2d ", Number[count]);

}

printf("\n");

Games++;

}


Games = 0;


}

else if (Cmd == 'c' || Cmd == 'C')

{

break;

}

else

{

printf("잘못된 명령어!!!\n");

}

}


return 0;

}


char Check(char* pList)

{

char count = 0;

char befor = 0;

BOOL bRun = TRUE;


for (count = 0; count < 6; count++)

{

for (befor = 0; befor < 6; befor++)

{

if (count == befor)

{

continue;// 같은것 끼리는 패스

}


if (pList[count] == pList[befor])

{

bRun = FALSE;

break;

}


}


if (bRun == FALSE)

{

break;

}

}


return count;

}


결과

 


#로또프로그램, #로또

Lotto_01.zip


'Programing - C > C Basic grammar ' 카테고리의 다른 글

043 구조체(struct) 이해하자  (0) 2017.07.27
042 NULL 포인터 이해하기  (0) 2017.07.27
041 포인터 이해  (0) 2017.07.27
040 메모리 이해하기  (0) 2017.07.27
039 배열 이해하기  (0) 2017.07.27
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

개념 :

1. 주소를 값을 가르키는 것을 포인터변수라 한다.

2. *(애틀리스크) &(엔퍼센트) 기호를 사용한다.


* 가르키다로 해석하세요

& 주소는 으로 해석합니다.



소스코드 : main.c

#include <stdio.h>


int main(void)


{

int nValue = 14;


int* pValue1 = NULL; //0

int* pValue2 = &nValue;


pValue1 = &nValue;


printf("%d, %d, %d, %d, %d, %d \n", nValue, *pValue1, *pValue2, &nValue, pValue1, pValue2);




return 0;

}



아직은 조금 익숙하지 않아서 이게 머야 할수 있는 포인터 입니다 ㅎ


많은 분들이 이 개념에서 무너지고 좌절합니다. 하지만


그렇게 어렵지 않습니다.


입문과 개념이기 때문에 살짝 이야기 하려합니다.


첫번째 pValue1 은 선언을하며 0으로 해줍니다.


포인터 변수는 무저건 선언과 동시에 무엇으로든지 초기화


해줘야한다 기억하셔야합니다!!


그리고 변수를 나중에 nValue의 주소값을 복사합니다.


두번째 pValue2 은 선언과 동시에 초기화를 해줍니다.


어떤 변수든 선언과 동시에 초기화할때는 저형태를 취합니다.


변수타입 변수이름 = 초기화 내용


결과




#프로그램입문, #c언어입문, #c언어, #포인터, #포인터입문

'Programing - C > C Basic grammar ' 카테고리의 다른 글

042 NULL 포인터 이해하기  (0) 2017.07.27
tack rest 01 ( 로또 프로그램 )  (0) 2017.07.27
040 메모리 이해하기  (0) 2017.07.27
039 배열 이해하기  (0) 2017.07.27
038 문자열 이해  (0) 2017.07.27
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

목표 :


소스 코드를 통해서 메모리 주소를 알아보고 변수와 변수 사이를 통해서 변수의 크기를 알아보는 실험을 해보도록 하겠습니다^^





소스 코드 : main.c

#include <stdio.h>


int main(void)

{

char cArray[3] = { 0, };

int nArray[3] = { 0, };

int count = 0;


printf("cArray 0부터 2까지 인덱스 주소값\n");


for (count; count < 3; count++)

{

printf("cArray[%d] 의 주소  %d \n", count, &cArray[count]);

}



printf("nArray 0부터 2까지 인덱스 주소값\n");


for (count = 0; count < 3; count++)

{

printf("nArray[%d] 의 주소  %d \n", count, &nArray[count]);

}



return 0;

}




결과





#c언어, #c언어입문, #프로그램입문, #메모리주소, #메모리이해

'Programing - C > C Basic grammar ' 카테고리의 다른 글

tack rest 01 ( 로또 프로그램 )  (0) 2017.07.27
041 포인터 이해  (0) 2017.07.27
039 배열 이해하기  (0) 2017.07.27
038 문자열 이해  (0) 2017.07.27
037 무조건 분기( goto )  (0) 2017.07.27

+ Recent posts