728x90
300x250

[프로그래밍 퀴즈(Quiz)] C언어의 구조체 문제(Structure Problems in C Language)


구조체는 서로 관계가 있는 변수들을 한 데 모아 하나의 묶음으로 표현한 자료 형식을 말한다.

이러한 구조체는 여러 가지 상황에서 유용하게 쓰인다.

첫째로 함수는 하나의 값만을 리턴할 수 있지만, 구조체 변수를 리턴하게 되면 여러 변수의 값을 되돌리는 것도 가능하게 된다.

둘째로 다양한 자료구조의 표현이 가능하게 된다.


"스택(Stack), 큐(Queue), 트리(Tree)" 등을 만드는 데 있어서 구조체는 필수적이다.


구조체는 다음처럼 선언한다.


(A structure is a data format that represents a set of related variables.
This structure is useful in many situations.
First, a function can return only one value, but returning a structure variable also makes it possible to return the values of several variables.
Second, various data structures can be represented.

Structures are essential in creating "stacks, queues, and trees."

The structure is declared as follows:)


typedef struct{

      char name[30];

      int age;

} STUDENT;


typedef는 사용자가 임의의 문자열을 원하는 문자열로 치환해 주는 명령어이다.
(typedef is a command that replaces an arbitrary string with a string you want.)


typedef unsigned int UINT;

      UINT a;


struct는 이 변수들의 모음이 구조체임을 선언하는 것이다.

마지막의 STUDENT는 구조체 변수의 이름이다. 따라서 실제도 선언된 구조체를 사용할 때는 다음처럼 사용하면 된다.
(struct declares that this collection of variables is a structure.
The last STUDENT is the name of the structure variable. Therefore, when using a structure that is actually declared, you can use:)


STUDENT lee;

     lee.name = '이철수';

     lee.age = 22;


구조체 변수 안에 반드시 일반 자료형만을 넣을 수 있는 것은 아니다. 배열, 포인터, 구조체도 구조체 변수의 멤버로 선언할 수 있다.
(You can't just put generic data types in structure variables.
Arrays, pointers, and structures can also be declared as members of structure variables.)


* 구조체 연산(Structure operations)

구조체 변수를 사용할 때는 다음처럼 사용하면 된다. (When using a structure variable, use.)


STUDENT one;

     one.math = 100;

     printf("Math Score = %d", one.math);


(참고로 포인터는 C언어 카테고리에서 게시물을 확인할 수 있음. 찾아보기 바람.)

(Note that the pointer can be found in the C language category. Please browse.)


위와 같이 구조체 변수, 멤버 변수의 형태로 사용할 수 있다. 하지만 구조체 변수가 포인터 변수로 선언되었다면 다르게 사용해야 한다.


STUDENT *two;

     two->math = 100;
     printf("Math Score = %d", two->math);


typedef struct{
     char name[30];
     int kor, eng, math, total;
     float ave;
} STUDENT;

void main(void){
        STUDENT y, *py;

       
        py = &y;

        strcpy(y.name, "lee");

        y.kor = 100;
        y.eng = 90;
        y.math = 80;

        y.total = y.kor + y.eng + y.math;
        y.ave = (float)y.total / 3;

       printf("Name: %s\n", py->name);
       printf("Korean = %d\n", py->kor);
       printf("English = %d\n", py->eng);
       printf("Mathematics = %d\n", py->math);

       printf("Total = %d\n", py->total);
       printf("Average = %f\n", py->ave);
}


구조체 포인터를 매개 변수로 쓰는 방법(How to write a structure pointer as a parameter)

void func(STUDENT *one);


포인터 변수 선언하듯이 변수 앞에 *만 붙여주면 된다.(Just like * declares a pointer variable, just put * before the variable.)

반응형
728x90
300x250
[C언어] pthread로 컴파일 하기

 

gcc pthread.c -o run -lpthread

 

Unix기반(리눅스 포함) 환경에서 이처럼 명령어를 처리하면 됩니다.

반응형
728x90
300x250

[C++] GCC - Windows에 관한 사항

 

이 글은 http://gcc.gnu.org에 들어가서 확인한 글입니다.
읽어보기 바랍니다.


1. GCC.gnu.org에서 확인한 글

 

 

 

그림 1-1) GCC.gnu.org의 글

 

http://gcc.gnu.org/install/specific.html#windows

 

Windows 32bit 기반에선 Cygwin와 MinGw를 이용하면 됩니다.

 


2. 윈도우에서 사용이 가능한 MinGW

 

윈도우에서 사용이 가능한 G++ 컴파일러입니다.

 


그림 1-2) GCC.gnu.org의 글

 

64bit 기반에선 mingw-w64-Runtime을 이용하면 됩니다. 단, 아이테니엄 계열은 윈도우에서 지원하지 않는다고 합니다.

 

 

MinGw(소스포지) - 오픈소스

http://sourceforge.net/projects/mingw/files/MinGW/Base/gcc/Version4/gcc-4.7.2-1/

반응형
728x90
300x250
[C++] 크로스플렛폼 IDE - CodeBlocks

 

 

리눅스, 윈도우, 등 환경에 관계없이 사용할 수 사용할 수 있는 IDE 도구입니다.

http://www.codeblocks.org/downloads/

 

 

컴파일러는 GCC 이외에도 자주 사용하는 컴파일러를 연결시켜서 사용하면 됩니다.
즉, 다양한 컴파일러 환경에서 이용할 수 있습니다.

 


1. 용어

 

번호

용어(Words)

한글 읽기

의미(Means)

1

IDE
(Integration Development Environment)

인티그레이션 데벨로프맨트 인바이어먼트

통합 개발 환경 도구

 

 

 

 

 

반응형
728x90
300x250

[PC활용] 프로그래밍 도구 - Dev C++


Dev CPP?

Dev C++는 C, C++언어를 사용할 수 있는 IDE 프로그래밍 도구입니다.

한글버전도 지원하고 있는 공개프로그램입니다.

 

 


1. 프로그램 소개

 

 


2. 첨부(Attachment)

 

devcpp-4.9.9.2.zip


- GNU/GPL 적용


3. 참고자료(Reference)


1. Dev-C++, https://sourceforge.net/projects/orwelldevcpp/
2. Bloodshed Software - Dev-C++, http://www.bloodshed.net/devcpp.html

반응형
728x90
300x250

[C언어] 포인터의 상수화 const

이 글은 소개하는 글은 아니고, 편안하게 생각을 정리해보기 위해서 작성하였습니다.


가정 1 : const int ……(포인터 생략)

문제 1 : const int는 무슨 변화를 일으키는 것 일까?
-> 결과 : 주소 변경만 허용

의문점이 생길 수 있는 가정 조건)
* const int * 꼴인데, int const * 꼴로 하면 어떻게 처리 될 것인가?

가정 2 : int * const ……(포인터 생략)
-> 결과 : 상수로서 처리만 가능.

반응형
728x90
300x250

[C언어] C언어 널포인터를 활용한 출력 결과

ptr이 예를 들어 x0000 주소라고 한다면, ptr의 값을 1증가 시킬 때 그 다음 번지는 무엇일까?


 #include <stdio.h>

 int main()
 {

int *ptr1 = 0;
char *ptr2 = 0;
double *ptr3 = 0;

printf("%d, %d, %d \n", ptr1++, ptr2++, ptr3++);
printf("%d, %d, %d \n", ptr1, ptr2, ptr3);

return 0;

 }
 

출력 : 0, 0, 0
         4, 1, 8


'포인터 연산에 따른 실질적인 값의 변화는 포인터 타입에 따라 다르다'는 결과를 알 수 있다.
int형 변수는 4바이트이다.
int *타입의 포인터 변수 값을 하나 증가시키면 4가 증가한다.
char형 변수는 1바이트이다.
char *타입의 포인터 변수 값을 하나 증가시키면 1이 증가한다.

즉,
x0001의 주소의 다음을 가르키는 주소는 x0004 이다.

반응형
728x90
300x250

[C언어] N! 팩토리얼을 이용한 반복문과 재귀함수

반복문 for, while, do while을 쉽게 이해 및 생각해보기 위해 몇자 적었습니다.
! 팩토리얼을 활용하여 반복문을 작성하겠습니다.


 


 

 

준비물 : 연습장, PC, Visual C++


반복문 연습 문제)
변수 조건)
int i = 1, int n = 4, unsigned long nRes, unsigned long factorial;

1. N! 팩토리얼을 순서도로 설계하시요.



2. 반복문과 함수 형식을 사용하여 구현하시요.

출력값 : 4! = 24

 

 



3. 재귀함수로 구현하시요.

출력값 : 4! = 24



반응형

+ Recent posts