728x90
반응형
1. c언어
●구조체 용어 정의
위의 그림에 있는 _node를 변수명 앞에 적으면 에러이다.
ex) _node A; //에러
그러므로 '_node'는 '타입'이라 부르지 않고 '태그'라 부른다.
위의 그림에 있는 포인터에서 '*'를 빼면 다음의 소스와 같다.
struct _node
{
Linked list의 개념을 이해하기 위하여 다음의 그림으로 간략히 나타낸다.
위의 그림에서 보다시피 여러 구조체 변수들이 있으면, 한 구조체 변수가 다른 구조체 변수를 가리키게 만들고, 또 그 구조체 변수가 또 다른 구조체 변수를 가리키게 만드는 것이다.
다음 2개의 소스는 똑같은 결과를 내는 Linked list를 구현한 것이다.
1번 소스
2번 소스
결과화면(1번 소스와 2번 소스 동일함)
'1번 소스'는 값을 출력하기 위해서는 갈 수록 코드가 길어지고 있다. 그에 반해 '2번 소스'는 동일한 코드가 반복되고 있다. 그러므로 '2번 소스'는 반복문을 사용하여 작성을 할수 있다. 다음의 소스는 for문을 이용하여 '2번 소스'를 재작성한 것이다.
2. TCP/IP 소켓 프로그래밍
●TCP는 데이터 경계가 없다. 그러나 UDP는 데이터 경계가 있다. 예를 들면, TCP 에코 프로그램에서 클라이언트가 10바이트 메시지를 보내고 6바이트를 받고, 그 다음 2바이트, 2바이트 순으로 받을 수도 있다는 것이다. UDP 에코 프로그램은 클라이언트가 10바이트 메시지를 보냈으면 10바이트를 받는다. 그러므로 UDP 프로그램에서 클라이언트가 sendto()함수를 2개 사용하면 서버는 반드시 recvfrom()함수를 2개 사용해야만 하는 것이다. 그러나 TCP 프로그램은 클라이언트가 send()함수를 2개 사용했다고 해서, 서버도 꼭 recv()함수를 2개를 사용해야 할 필요가 없는 것이다.
3. 기타
●리눅스 vi편집기 단축키
vi편집기에 여러 단어를 적어 놓고 한 단어의 아무 글자에 커서를 위치 시켜 놓은 뒤, 'd', 'w'를 누르면 커서가 위치한 글자 포함하여 그 단어의 끝까지가 삭제 된다. 삭제하기 전의 단어 뒤에 공백을 두고 있는 단어는 앞에서 삭제하고 남은 글자가 있다면 그 바로뒤에 붙게 되고, 단어 전체를 삭제한 경우에는 공백을 두고 있는 뒤의 단어가 삭제한 단어의 첫글자가 있는 위치로 옮겨진다. 다음의 동영상으로 이해를 돕는다.
●구조체 용어 정의
위의 그림에 있는 _node를 변수명 앞에 적으면 에러이다.
ex) _node A; //에러
그러므로 '_node'는 '타입'이라 부르지 않고 '태그'라 부른다.
위의 그림에 있는 포인터에서 '*'를 빼면 다음의 소스와 같다.
struct _node
{
int iNum;
struct _node p; //에러
}
위의 소스가 에러인 이유는, 컴파일할때 변수의 크기를 결정하여야 하는데 구조체 멤버 'p'는 크기가 어느정도인지 알수 없기 때문이다. 재귀함수와 같이 자신이 자신을 계속 만들어서 할당되어질 메모리 크기가 무제한이 되기 때문이다.
●typedef 명령문 사용 형식
typedef oldtype newtype; <- 세미콜론 빼먹지 않도록 주의해야 한다.
●위의 그림에 나타낸 struct _node를 typedef를 사용하여 'NODE'로 나타내면 다음과 같다.
typedef struct _node NODE;
struct _node의 정의 부분은 위의 'typedef struct _node NODE;'위에 적든 아래에 적든 상관없이 'cl', 'gcc' 둘다 모두 정상적으로 프로그램이 동작한다. 아래의 소스 그림으로 이해를 돕는다.
●Linked liststruct _node p; //에러
}
위의 소스가 에러인 이유는, 컴파일할때 변수의 크기를 결정하여야 하는데 구조체 멤버 'p'는 크기가 어느정도인지 알수 없기 때문이다. 재귀함수와 같이 자신이 자신을 계속 만들어서 할당되어질 메모리 크기가 무제한이 되기 때문이다.
●typedef 명령문 사용 형식
typedef oldtype newtype; <- 세미콜론 빼먹지 않도록 주의해야 한다.
●위의 그림에 나타낸 struct _node를 typedef를 사용하여 'NODE'로 나타내면 다음과 같다.
typedef struct _node NODE;
struct _node의 정의 부분은 위의 'typedef struct _node NODE;'위에 적든 아래에 적든 상관없이 'cl', 'gcc' 둘다 모두 정상적으로 프로그램이 동작한다. 아래의 소스 그림으로 이해를 돕는다.
Linked list의 개념을 이해하기 위하여 다음의 그림으로 간략히 나타낸다.
위의 그림에서 보다시피 여러 구조체 변수들이 있으면, 한 구조체 변수가 다른 구조체 변수를 가리키게 만들고, 또 그 구조체 변수가 또 다른 구조체 변수를 가리키게 만드는 것이다.
다음 2개의 소스는 똑같은 결과를 내는 Linked list를 구현한 것이다.
1번 소스
2번 소스
결과화면(1번 소스와 2번 소스 동일함)
'1번 소스'는 값을 출력하기 위해서는 갈 수록 코드가 길어지고 있다. 그에 반해 '2번 소스'는 동일한 코드가 반복되고 있다. 그러므로 '2번 소스'는 반복문을 사용하여 작성을 할수 있다. 다음의 소스는 for문을 이용하여 '2번 소스'를 재작성한 것이다.
2. TCP/IP 소켓 프로그래밍
●TCP는 데이터 경계가 없다. 그러나 UDP는 데이터 경계가 있다. 예를 들면, TCP 에코 프로그램에서 클라이언트가 10바이트 메시지를 보내고 6바이트를 받고, 그 다음 2바이트, 2바이트 순으로 받을 수도 있다는 것이다. UDP 에코 프로그램은 클라이언트가 10바이트 메시지를 보냈으면 10바이트를 받는다. 그러므로 UDP 프로그램에서 클라이언트가 sendto()함수를 2개 사용하면 서버는 반드시 recvfrom()함수를 2개 사용해야만 하는 것이다. 그러나 TCP 프로그램은 클라이언트가 send()함수를 2개 사용했다고 해서, 서버도 꼭 recv()함수를 2개를 사용해야 할 필요가 없는 것이다.
3. 기타
●리눅스 vi편집기 단축키
vi편집기에 여러 단어를 적어 놓고 한 단어의 아무 글자에 커서를 위치 시켜 놓은 뒤, 'd', 'w'를 누르면 커서가 위치한 글자 포함하여 그 단어의 끝까지가 삭제 된다. 삭제하기 전의 단어 뒤에 공백을 두고 있는 단어는 앞에서 삭제하고 남은 글자가 있다면 그 바로뒤에 붙게 되고, 단어 전체를 삭제한 경우에는 공백을 두고 있는 뒤의 단어가 삭제한 단어의 첫글자가 있는 위치로 옮겨진다. 다음의 동영상으로 이해를 돕는다.
728x90
'코스웨어 > 11년 내장형하드웨어' 카테고리의 다른 글
[내장형]이동현_7월14일_일일보고서 (19) | 2011.07.14 |
---|---|
[내장형]김정우-7월13일 일일보고서 (16) | 2011.07.13 |
[내장형]황세선 2011년7월12일 수업내용 (31) | 2011.07.13 |
[내장형] 2011년 7월 11일 일일 보고서(선주) (14) | 2011.07.11 |
[내장형]이수란_20110707_struct & TCPechoClient (21) | 2011.07.07 |
[내장형]윤민석 2011년 7월 6일 수업내용 (21) | 2011.07.06 |
[내장형]김동화 2011년7월 5일 수업내용 (14) | 2011.07.05 |
[내장형]이성재 2011년7월4일 수업내용 (15) | 2011.07.04 |