달력

122025  이전 다음

  • 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

'C'에 해당되는 글 14건

  1. 2014.03.17 typedef
  2. 2014.03.17 구조체 와 포인터
  3. 2014.03.17 구조체 와 배열
  4. 2014.03.17 구조체
  5. 2014.03.17 Call by Referance
  6. 2014.03.17 Call by Address
  7. 2014.03.17 Call by Value
  8. 2014.03.17 다중 포인터
  9. 2014.03.17 다차원 배열
  10. 2014.03.17 배열 & 포인터

typedef

C 2014. 3. 17. 02:20


#include<stdio.h>
void main()
{
   typedef int_var;
   int a=100;
   int_var b=200;
   printf("%d %d \n",a,b);
}



*typedef 실행시 그다음부터는 int형 자료형을 사용할때 int_var이라는 별명을 사용해서 선언가능.

◎구조체에 적용


typedef struct student {
   int id;
   char name[20];
   int kor,eng,math;
   char address[100];
}People;
void main()
{
   People ST, *p;
   p= &ST;
       .
       .
       .
}


People → 별명으로 선언


'C' 카테고리의 다른 글

구조체 와 포인터  (0) 2014.03.17
구조체 와 배열  (0) 2014.03.17
구조체  (0) 2014.03.17
Call by Referance  (0) 2014.03.17
Call by Address  (0) 2014.03.17
Posted by 레이드리안
|

구조체 와 포인터

C 2014. 3. 17. 02:19

void main()
{
   p= &ST;
   printf("학번입력");
   scanf("%d"&p->id);

   printf("이름입력");
   scanf("%s",&p->name);
  
  printft("국,영,수 입력");
  scanf("%d %d %d",&p->kor,&p->eng,&p->math);

  printft("집주소");
  scanf("%s",&p->address);

  printf("학번: %d", p->id);
  printf("이름:%s", p->name);
  printf("국,영,수 성적: %d %d %d",p->kor, p->eng, p->math);
  printf("집주소:%s",p->address);



※scanf("%s",p->name); → 띄어쓰기로 공백입력시 null값으로 인식, 띄어쓰기 전까지만 기억함
    gets(p->name); → 한번만입력했는데 enter키가 자동으로 들어감 gets() 전에 scanf로 
                                입력받을때 enter키가 버퍼에 남아있어서 gets()가 받아서 name에 넣어버림
    getch(p->name); → enter값을 받아서 저장도안하고 사라짐

⊙해결방법: 버퍼 초기화 fflush(stdin);
                      
-   fflush(stdin);
    gets(p->name);



'C' 카테고리의 다른 글

typedef  (0) 2014.03.17
구조체 와 배열  (0) 2014.03.17
구조체  (0) 2014.03.17
Call by Referance  (0) 2014.03.17
Call by Address  (0) 2014.03.17
Posted by 레이드리안
|

구조체 와 배열

C 2014. 3. 17. 02:18

#include<stdio.h>
struct student{
   int id;
   char name[20];
   int eng,kor,math;
   char address[100];
};

void main()
{
   struct student ST[2]= {{201154321,"hong gil dong",90,91,92."서울 강남구 대치동"},
                                  {201112345,"kang gil dong",98,80,86,"서울 종로구 혜화동"}};

for(int i=0; i<2; i++)
{
   printf("ST구조체의 크기: %d \n",sizeof(ST));
   printf("ST학번: %d" ,ST[i].id);
   printf("ST이름: %s" ,ST[i].name);
                   .
                   .
                   .
}




*scnaf("%d",&ST.id) ← 로값을 입력받을수 있음.
  ST.id= 12345 형식으로 값직접대입가능.

구조체의 크기는 136
 136byte 가 2개선언 →ST[0] , ST[1]

'C' 카테고리의 다른 글

typedef  (0) 2014.03.17
구조체 와 포인터  (0) 2014.03.17
구조체  (0) 2014.03.17
Call by Referance  (0) 2014.03.17
Call by Address  (0) 2014.03.17
Posted by 레이드리안
|

구조체

C 2014. 3. 17. 02:18
구조체란?

사용자가 직접 자료형을 만들어서 사용하는것!


사용법                                       ex)
struct 구조체{                                            struct my_spec{
   자료형 변수 ;                                              int tall;
};                                                                 int  age;
                                                                   char name[20];
                                                                 };


위의 ex) 와같이 선언후
struct my_spec A;     → int 형 2개 char 형 한개를 묶어서 my_spec라는 자료형 A를 만듦.
A.tall = Value;



#include<stdio.h>
struct student{
   int id;
   char name[20];
   int kor,eng,math;
   char address[100];
};

void main()
{
   struct student ST= {201154321, "hong gil dong", 90,91,92,"서울 강남구 대치동"
};
   printf("ST구조체의 크기 : %d \n" sizeof(ST));
   printf("ST의 학번 : %d \n",ST.id);
   printf("ST의 이름: %s \n",ST.name);
   printf("ST의 성적(국,영,수):%d %d %d \n",ST.kor,ST.engm,ST.math);
   printft("ST의 주소:%s \n",ST.address);
}




*구조체를 정의하고 main에서 구조체 자료형(student)을 ST라는 변수로 선언.
  초기화는 구조체 타입에 정의한순서대로 (int, char,int,int,int,char)
printf문에서 ST.id  → 구조체의 접근은 .(마침표)로 접근

'C' 카테고리의 다른 글

구조체 와 포인터  (0) 2014.03.17
구조체 와 배열  (0) 2014.03.17
Call by Referance  (0) 2014.03.17
Call by Address  (0) 2014.03.17
Call by Value  (0) 2014.03.17
Posted by 레이드리안
|

Call by Referance

C 2014. 3. 17. 02:17

Call by Referance란? 전달인자에 별명을 붙여줌.

ex)  void main()

   int name=10;
   int &nick= name;
}

※swap함수를 부를때 별명으로 &imsi_x, &imsi_y를 만듦.


#include<stdio.h>
void swap(int &imsi_x, &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("함수안의 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
구조체  (0) 2014.03.17
Call by Address  (0) 2014.03.17
Call by Value  (0) 2014.03.17
다중 포인터  (0) 2014.03.17
Posted by 레이드리안
|

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 레이드리안
|