달력

82025  이전 다음

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31

'분류 전체보기'에 해당되는 글 66건

  1. 2014.03.17 Call by Address
  2. 2014.03.17 Call by Value
  3. 2014.03.17 다중 포인터
  4. 2014.03.17 다차원 배열
  5. 2014.03.17 배열 & 포인터
  6. 2014.03.17 포인터
  7. 2014.03.17 변수의 공간할당
  8. 2014.03.17 배열(문자)
  9. 2014.03.17 배열(숫자)
  10. 2014.03.17 객체지향 개념 적용 I

Call by Address

C 2014. 3. 17. 02:17

Call by Address란? 주소를 넘겨주는 방식


#include<stdio.h>
void swap(int *imsi_x, int *imsi_y);
int main()
{
   int x=10, y=20;
   printf("함수호출전 x= %d y=%d",x,y);
   swap(&x,&y);
   printf("함수호출후  x=%d y=%d",x,y);
}

void swap(int *imsi_x, int imsi_y)
{
   int temp=0;
   temp= *imsi_x;
   *imsi_x = *imsi_y;
   *imsi_y = temp;
   printf("swap 함수안 imsi_x=%d , imsi_y=%d",imsi_x,imsi_y);
}



첫번째 main  x=10, y=20
두번째 swap x=20, y=10
세번째 main x=20, y=10


*주소를 직접참조하여 값이 변경가능

'C' 카테고리의 다른 글

구조체  (0) 2014.03.17
Call by Referance  (0) 2014.03.17
Call by Value  (0) 2014.03.17
다중 포인터  (0) 2014.03.17
다차원 배열  (0) 2014.03.17
Posted by 레이드리안
|

Call by Value

C 2014. 3. 17. 02:16


Call By Value 란? 함수에 값을 넘겨줌(복사값을 전달함으로 원본값이 변하지않음)
                              단점: 값을 넘겨줄때마다 고비용. 복사손실 단점


#include<stdio.h>
void swap(int imsi_x, int imsi_y);
void main()
{
   int x=10, y=20;
   printf("함수호출전 x= %d, y=%d", x,y);

   swap(x,y);

   printf("함수호출후 x=%d, y=%d, x,y);
}

void swap(int imsi_x, int imsi_y)
{
   int  temp =0;
   temp = imsi_x;
   imsi_x = imsi_y;
   imsi_y= temp;
   
   printf("swap 함수안의  imsi_x = %d, imsi_y= %d", imsi_x,imsi_y);
}



첫번째 main 함수출력값:   10,20
두번째 swap 함수출력값:   20,10
세번째 main 함수출력값:   10,20

*swap 함수가 실행될때 main함수에선 10과 20이라는 값이 복사되어 넘어감
 swap함수가 끝나고 main함수로 돌아왔을때 값이 바뀌지 않음.


'C' 카테고리의 다른 글

Call by Referance  (0) 2014.03.17
Call by Address  (0) 2014.03.17
다중 포인터  (0) 2014.03.17
다차원 배열  (0) 2014.03.17
배열 & 포인터  (0) 2014.03.17
Posted by 레이드리안
|

다중 포인터

C 2014. 3. 17. 02:16

다중포인터란?  포인터 변수의 주소를 담고 있는 포인터
 *(참조연산자)만큼 참조 연산이 일어나면서 접근함

 int **pp    : 이중포인터
 int ***ppp : 삼중포인터


#include<stdio.h>
void main()
{
   char arr[4][10] = {"Dog","Cat","Monkey",Mouse"};
   char (*p)[10];
   int i=0;
   p=arr;

   for(i=0;  i<4;  i++)
   {
      printf("배열 포인터 p+ %d %s 주소: %d \n",i,p+i,p+i);
    }
   printf("\n");

   for(i=0;  i<4;  i++)
   {
       printf("이차원배열 arr + %d %s 주소: %d \n",i,arr+i,arr+i);
    }

 }



'C' 카테고리의 다른 글

Call by Address  (0) 2014.03.17
Call by Value  (0) 2014.03.17
다차원 배열  (0) 2014.03.17
배열 & 포인터  (0) 2014.03.17
포인터  (0) 2014.03.17
Posted by 레이드리안
|

다차원 배열

C 2014. 3. 17. 02:15




#include<stdio.h>
void main()
{
   int i=0, j=0;
   int num[3][3] = {1,2,3,4,5,6,7,8,9};
   for(i=0; i<3; i++)
   {
      for(j=0; j<3; j++)
         {
             printf("num[%d][%d]=%d", i,j,num[i][j]);
          }
       printf(""\n");
    }
   }




*num 이라는 배열은 3개의 12바이트 공간을 한개의 요소로 갖는 일차원 배열.
 num[0]을 배열이름이라고 생각하고, 변수 3개를 갖는다고 생각하면됨.
 
● num   = &num[0] = &num[0][0] = 0000
    num1 =  &num[1] = &num[1][0] = 0012
 

'C' 카테고리의 다른 글

Call by Value  (0) 2014.03.17
다중 포인터  (0) 2014.03.17
배열 & 포인터  (0) 2014.03.17
포인터  (0) 2014.03.17
변수의 공간할당  (0) 2014.03.17
Posted by 레이드리안
|

배열 & 포인터

C 2014. 3. 17. 02:15

#include<stdio.h>
void main()
{
   int arr[5]={1,2,3,4,5}'
   int i=0;
   for(i=0; i<5; i++)                                 for(i=0; i<5, i++)
   {                                 동일코드       {
      printf("%d",arr[i]);          〓                printf("%d",*(arr+i));
   }                                                     }
   printf("\n");
}



※배열이름은 배열의 첫번째 주소를 가지고있다.(포인터상수)


'C' 카테고리의 다른 글

다중 포인터  (0) 2014.03.17
다차원 배열  (0) 2014.03.17
포인터  (0) 2014.03.17
변수의 공간할당  (0) 2014.03.17
배열(문자)  (0) 2014.03.17
Posted by 레이드리안
|

포인터

C 2014. 3. 17. 02:14

포인터란?   주소 그자체
 ①포인터는 메모리의 번지 주소.
 ②포인터 변수  메모리의 주소를 가지는 변수.
 ③포인터 변수의 크기는 4Byte 의 부호없는 정수형

◎포인터연산자
 ① &(주소연산자)는 변수의 메모리 주소를 표현해주는 연산자.
 ② *(참조자)      는 주소를 이용하여 변수값을 접근하는 연산자.


#include <stdio.h>
void main()
{
   int number =100;
   int *p;
   p= &number; 
   printf("p =%d \n",p);
   printf("*p = %d \n",*p);
}



《p= &number》
→p는 포인터 변수로 number의 주소값을 가지고 있다.
   p라는 포인터 변수가 가지는 값을 주소로 보고, 그값(number의 주소)을 참조해서 해당주소의 
   실제값을 출력.







printf에서 *p라는 참조연산자를 실행한값은 p라는 퐁인터변수가 가지는 값을 주소로 보고 그값(주소)을
참조하여 한번더 들어간다는 뜻.

즉,  number값은 100                         p값은  0000 이라는 number의 주소값
    &number값은  0000(주소)            &p값은  0004 라는 포인터 변수의 p값
                                                    *p값은  0000 이라는 p값의 데이터를 참조해서 찾아간 number의 값


 


#include <stdio.h>
void main()
{
   char *p = "string";
   while (*p)
   {
      printf("%c,%d \n",*p,p);
      p++;
    }
}


p[]로 사용하던것을 *p로 선언!
while문에서 *p의 마지막인 Null값을 만나면 종료.
포인트 변수에 +1



*scanf로 받을시

#include<stdio.h>                                       #include<stdio.h>
void main()                                                void main()
{                                  (수정code)            {
   char *p;                             →                      char *p,arr[10];
   scanf("%s",p);                                             scanf("%s",arr);
   printf("%s",p);                                               p=arr;
}                                                                   printf("%s",p);
                                                                 }

                                                               《p=arr;》→배열의 이름(첫번째주소값)을 p에대입.   

    

 


'C' 카테고리의 다른 글

다차원 배열  (0) 2014.03.17
배열 & 포인터  (0) 2014.03.17
변수의 공간할당  (0) 2014.03.17
배열(문자)  (0) 2014.03.17
배열(숫자)  (0) 2014.03.17
Posted by 레이드리안
|

변수의 공간할당

C 2014. 3. 17. 02:13

int arr[4] = {10,16,17,19};
int A=32;
int B=31;
int C=63;



 ↑메모리 할당   그림으로 표시

  주소 값
arr[0] 0000 10
arr[1] 0004 16
arr[2] 0008 17
arr[3]  0012 19
 A 0100 32
 B 0124 31
 C 0088 63

↑표로표시


pritnf ("%d",A)      ← 0100 주소에 있는 값출력
printf("%d",arr[3]) ← 0012 주소에 있는 값출력

⊙배열 이름은 배열의 첫번째 주소를 가지고있다!

 char arr[] = "test";
 printf("%d",arr[3]); 


*arr[0+2]  → 's'가있는 공간 0002에 접근

'C' 카테고리의 다른 글

다차원 배열  (0) 2014.03.17
배열 & 포인터  (0) 2014.03.17
포인터  (0) 2014.03.17
배열(문자)  (0) 2014.03.17
배열(숫자)  (0) 2014.03.17
Posted by 레이드리안
|

배열(문자)

C 2014. 3. 17. 02:00

"TEST 문자열"

#include <stdio.h>
void main()
{
  char arr[4] = {'T','E','S','T'};
  int i=0;
  for ( i=0; i<4; i++)
  { 
    printf("%c",arr[i]);
   }
}

 변수arr[0]  arr[1]arr[2] arr[3] 
 값 'T''E' 'S' 'T' 


※char arr[4] ="TEST"; 로 초기화시 문자열의 마지막에 \0 즉, Null 의 값이 들어감.
<Null 값이 들어있지않을시에 Null값을 만날때까지 쓰레기값을 출력한다.>
그래서 char arr[4] ="TEST"; 
          char arr[5] ="TEST"; 로 바꿔야함

*배열의 크기를 잡지않고 arr[]을 쓰면 자동으로 크기가 할당됨.

'C' 카테고리의 다른 글

다차원 배열  (0) 2014.03.17
배열 & 포인터  (0) 2014.03.17
포인터  (0) 2014.03.17
변수의 공간할당  (0) 2014.03.17
배열(숫자)  (0) 2014.03.17
Posted by 레이드리안
|

배열(숫자)

C 2014. 3. 17. 01:59

DataType 배열이름[크기];

#include<stdio.h>
{ int arr[5] = {1.2,3,4,5}
   printf("arr = %d \n",arr[4]);
}

*선언시 

 변수arr[0]  arr[1] arr[2] arr[3]arr[4] 
 값 2 3 4 5


※특징
1. 배열은 [0] 부터 시작
2. 배열크기는 선언할때 메모리상 공간을 할당받기 때문에 프로그램도중에 크기를 변경할수 없다.
3. 배열의 이름은 배열의 첫번째 주소를 가지고 있다 (포인터상수)

#include <stdio.h>
void main()
{
   int  i = 0, sum = 0, english[10] = {};

   for(i=0; i<10; i++)
  {
     printf("%d번의 영어 점수를 입력하세요:",i+1");
     scanf("%d",&english[i]);
  }
printf("\n");

for(i=0; i<10; i++)
  sum += english[i];

printf("10명의 영어점수 총합은 %d",sum);
}

'C' 카테고리의 다른 글

다차원 배열  (0) 2014.03.17
배열 & 포인터  (0) 2014.03.17
포인터  (0) 2014.03.17
변수의 공간할당  (0) 2014.03.17
배열(문자)  (0) 2014.03.17
Posted by 레이드리안
|

객체지향 개념 적용 I

UML 2014. 3. 17. 01:55

* UML 클래스 아이콘


클래스를 UML로 나타낼때는 사각형 안에 이름을 적어 넣는다.

이때 클래스의 이름은 첫자를 대문자로 두고, 사각형의 상단에 두는 것이 상례이다.

클래스 이름이 두 단어로 되어 있다면 두 단어를 붙여쓰고 둘째단어의 첫자도 대문자로 쓴다.


* UML패키지

패키지는 UML에서 다이어그램 요소를 그룹으로 묶을 때 사용하는 것이며, 탭이 달린 폴더안에 텍스트 이름을 적어 넣는 것으로 나타낸다.


*경로 이름(Path Name)을 가진 클래스

ComputerGame 클래스가 Game이라는 패키지에 속해있다면, Game::ComputerGame을 붙여준다. :: 을 중심으로 왼쪽은 패키지이름 오른쪽은 클래스 이름 으로적어준다.


*클래스 이름과 속성

속성이란 '클래스'에 속한 특성에 이름을 붙인 것으로 이것이 가질수 있는 값의 범위를 설정한다. 클래스는 0개이상의 속성을 가질수 있다. 속성 이름은 소문자를 쓰는게 보통이며, 두단어 이상으로 되어있을 경우, 둘째 단어부터 첫문자를 대문자로 쓴다.

클래스 아이콘에 속성을 적을경우 클래스 이름에 한줄을 그어 구분 지은후 그줄의 아래부터 시작한다.

속성의 값이 될수 있는 타입을 같이 써 줌으로써 속성에 추가적인 정보를 붙있수 있다.


*오퍼레이션

-오퍼레이션이란 객체에 요청할 수 있는 행동을 말한다.  오퍼레이션 리스트는 속성  리스트가 위치한 구역의 아랫부분에 위치시킨다.

*오퍼레이션 시그너처

-속성에 정보를 붙여줄 수 있는 것처럼, 오퍼레이션에도 추가적인 정보를 붙여줄 수 있다. 오퍼레이션 이름 뒤에 따라오는 괄호 안에 매개변수 리스트를 넣어줄수 있는데, 하나의 매개변수는 "이름:타입" 형태를 가진다.

클래스 아이콘 에서 함수를 나타내려면 오퍼레이션 괄호 뒤에다가 콜론을 찍고 반환값과 타입을 적으면 된다.



'UML' 카테고리의 다른 글

상속과 일반화  (0) 2014.03.18
UML 관계(연관 )  (0) 2014.03.17
객체 지향 개념 적용 II  (0) 2014.03.17
객체지향을 이루는 몇가지 개념  (0) 2014.03.16
다이어그램  (0) 2014.03.16
Posted by 레이드리안
|