BLOG main image
분류 전체보기 (129)
새소식 (NEWS) (2)
일상 + 생활 (21)
n e w + i s s u e (10)
노래가 있는 이야기~♪ (11)
Make + Food (0)
여행 (1)
Tips & Tech (31)
C Programming (9)
운영체제(O.S) (20)
TroubleShootings (5)
JSP (0)
IT 관련 용어 및 설명 (7)
Reverse Engineering (0)
Michael Kors Handbags Outlet
Michael Kors Handbags Outlet
michael kors bag
michael kors bag
michael kors laptop bag
michael kors laptop bag
michael kors crossbody bags
michael kors crossbody bags
Michael kors handbags
Michael kors handbags
2,758,208 Visitors up to today!
Today 1,969 hit, Yesterday 3,600 hit
daisy rss

who's online
tistory 티스토리 가입하기!
'C'에 해당되는 글 5건
2008.10.20 01:42
/* 문자열 포인터는 시작 주소를 입력하면, NULL을 만날 때까지 출력한다. */
#include <stdio.h>

void strout1(char ss[]); // Array Value parameter
void strout2(char *ss);  // Point Value parameter

int main(void)
{
    char aa[10] = "abcde";
    char bb[10] = "Young";
    char *p = bb;  // input the 'bb' array start address, pointer value p

    /* 직접적으로 변수를 출력 합니다. */
    printf("bb = %s \n
            *p = %s \n
            &p = %p \n",
     bb, p, p);
    printf("*p+1 = %c \n", *(p+1));

    /* 함수의 파라미터를 이용하여 값을 출력합니다. */
    strout1(aa);
    strout2(aa);

    /* 함수의 문자열을 직접 입력하여 값을 전달합니다. */
    strout1("string1234");
    strout2("string1234");
   
    return 0;
}

void strout1(char ss[])  // Input parameter array value
{
    printf(" ss : %s\n", ss);
}

void strout2(char *ss)  // Input parameter point value
{
    printf(" ss : %s\n", ss);
}

< 컴파일 >
[root@study02 ~]# gcc -o pointer p.c -W -Wall

< 결과 값 >
[root@study02 ~]# ./pointer
bb = Young
*p = Young
&p = 0xbfe938a0
*p+1 = Y
 ss : abcde
 ss : abcde
 ss : string1234
 ss : string1234

[root@study02 ~]#

신고
Creative Commons License
Creative Commons License

'C Programming > ::: note :::' 카테고리의 다른 글

유용한 디버그 메시지  (0) 2009.02.12
포인터 문자열 변수 및 함수 파라미터 사용 예제  (0) 2008.10.20
C_노트  (0) 2007.07.12
File system - fopen();, fclose();  (0) 2007.01.03
파일 입출력 - 스트림(stream)  (0) 2007.01.03
   

Name
Password
Homepage
Secret
2008.04.02 17:53

설명 1

인자(parameter, 매개 변수)와 인수(argument, 실행 인자)는 일반적으로 같은 것처럼 통용된다. 하지만, 엄밀히 말하자면 인자는 함수 정의에 사용되는 변수를 말하고 인수는 함수의 호출에 사용되는 변수를 말한다.
즉, 함수 작성시:

int myFunc(char *str);
에서 사용된 변수 str을 인자라 하고

char *buf = "hello";
int val = myFunc(buf);
에서 사용된 변수 buf를 인수라고 한다.

정리하자면, 함수 원형 작성시 사용되는 변수를 인자(parameter, 매개 변수)라 하고, 코딩 중에 함수 호출시 사용되는 변수를 인수(argument, 실행 인자)라고 한다.


설명 2

인자(parameter, 매개 변수)와 인수(argument, 실행 인자)는 많이 혼용되서 쓰인다.
하지만 매개 변수는 보다 폭이 넓어서 어느 함수가 다른 함수에게 전달하는 개념도 포함하지만 실행 인자는 프로그램의 진입점 가령 main()나 init()가 실행시 전달 받는 인수 만을 특별히 놓고 부르는 개념이다.
argument는 특히 프로그램 시작시 넘겨 주는 값을 지칭한다. 

예를 들어:

cat test.txt
argument는 test.txt이다.


설명 3

C++ 표준에서는 parameter와 argument를 명확히 구분하고 있다.
parameter는 함수 선언, argument는 호출시의 인수를 의미한다.

예를 들어:


int fool(float val); // val은 인자(매개 변수)
int main(void)
{
        a = foo(1.0f); // 1.0f는 인수(실 인수 )
        ...
}

int fool(float val) // val은 인수(형식 인수)
{
        ...
}

출처 : 네이버 임베디드 시스템 카페
[참고]

C Programming Language, C++ Pirmer Plus

신고
Creative Commons License
Creative Commons License
   

Name
Password
Homepage
Secret
2007.07.12 03:42

typedef - 새로운 데이터형의 이름을 작성하는 것.(기존의 데이터형에 다른 이름을 부여)

Usage )

  • typedef 기존 데이터형 동의어명;

Example )

typedef int word;

//  다음과 같이 선언을 하면 word는 int 와 같은 의미가 되는 동의어가 된다.

int a; == word a;

좋은 예)

  1. 비트연산 - 비트 연산 대상 변수는 부호가 없어야 하므로
    unsigned char dt;    // 다음과 같이 선언
    비트 처리를 한다는 의사가 불분명해지므로 typedef를 활용하여 다음과 같이 만든다.
    typedef unsigned char byte;   // unsigned char의 동의어 byte를 만든다.

    byte dt;  == unsigned char dt;

typedef와 #define의 차이점

 동의어는 typedef 뿐만 아니라 #define으로도 작성가능하다. 하지만 둘의 차이는 분명 존재한다.

  1.  처리시점 - #define은 프리프로세서에서 해석, typedef는 컴파일러에 의해 해석.
  2. [단순 텍스트 치환 기능] 과  [데이터형의 동의어를 만든다] 의 차이
    예제 )
    #define intptr int *
    intptr p1, p2;   // int *p1, p2;  p1은 포인터, p2는 변수
    [단순 텍스트 치환 기능]
    인 #define의 한계.

    typedef int * intptr;
    intptr p1, p2;
       // int *p1, *p2; 모두 정상적인 int형 포인터로서 처리

typedef는 단순한 변수명뿐 아니라 구조체 등에도 사용할 수 있다.
struct man {

        char name[20];

        int age;

};

typedef struct man haksang;

다음과 같이 선언하면, 선언 이후에

haksang dt[50];

과 같이 선언할 수 있다.


typedef와 가상 데이터형

 typedef의 또 하나의 목적은 기계간에 공통으로 적용되는 가상 데이터형을 만드는 것이다.

 예를 들어 sizeof연산자를 이용할 때는

int a;

a = sizeof(...);

다음은 원할하게 동작한다.

하지만, sizeof연산자가 배열에 적용되었는데 그 배열의 크기가 엄청나게 큰 값일 경우 int형으로는 모두 수용할 수 없다. 그렇기 때문에 ANSI C에서는

size_t형이라는 새로운 데이터형을 이용하도록 하고 있다. size_t는 편입 데이터형이 아닌 stddef.h안에서 다음과 같이  C 시스템로써 적절한 값에

typedef로 설정되어 있다.


typedef unsigned int size_t;


"size_t 를 사용하면 문제가 일어나지 않는다."  고 염두해 두면 된다.

기계간에 프로그램을 이식할 때도 size_t형을 이용하면 리스트를 변경할 필요가 없다.

따라서,


size_t a;

a = sizeof(...);


라고 하면 보다 안전하다. ( 그러나 일반적으로 int로 충분하다.)




이 글은 스프링노트에서 작성되었습니다.

신고
Creative Commons License
Creative Commons License

'C Programming > ::: note :::' 카테고리의 다른 글

유용한 디버그 메시지  (0) 2009.02.12
포인터 문자열 변수 및 함수 파라미터 사용 예제  (0) 2008.10.20
C_노트  (0) 2007.07.12
File system - fopen();, fclose();  (0) 2007.01.03
파일 입출력 - 스트림(stream)  (0) 2007.01.03
   

Name
Password
Homepage
Secret
2007.01.19 03:08

작성중인 파일 첨부 cygwin에서 동작 시킬것.



신고
Creative Commons License
Creative Commons License
   

Name
Password
Homepage
Secret
2007.01.19 03:02


소켓 프로그래밍

talk_server.c
talk_client.c

사용법 : ./talk_server 3000 (port number)
사용법 : ./talk_client 192.168.253.168 3000 (IP address, port number)


신고
Creative Commons License
Creative Commons License

'C Programming > ::: data :::' 카테고리의 다른 글

소켓 프로그램 - talk_server, talk_client  (0) 2007.01.19
   

Name
Password
Homepage
Secret
prev"" #1 next

티스토리 툴바