[내장형]윤민석 2011년 7월 6일 수업내용
<함수 포인터 복습>
밑의 소스의 빈칸을 채우시오 test 함수의 인자는 p 입니다.
( )test( ? ) ( )
{
return malloc;
}
int main()
{
( fp ) = test(printf);
return 0;
}
malloc 기본형 void *malloc(size_t size) 입니다.
size_t => int 입니다.
그러므로
void *malloc(int) 로 쓸수있습니다.
위의 빈칸을 메우게 되면
void *(*test(int(*p)(const char *, ...)))(int)
{
return malloc;
}
int main()
{
void *(*fp))(int) = test(printf);
return 0;
}
이렇게 쓸수가 있습니다.
[어제 한 구조체 포인트 보충설명]
위 소스는 구조체를 이용하여 (int char 배열) 포인터가 보는 관점을 다르게 만들어 놓은 소스입니다.
구조체 포인터는 array 를 가리키고있습니다.
그러므로 구조체가 array 를 구조체 형식으로 보고있습니다.
구조체는 int a,b,c, 가 있으므로 12byte 를 한번에 살펴 봅니다.
[PE HEADER]의 구조체 입니다.
여기서 Magic Number 가 들어있는 곳이 e_magic 인데 여기를 HEXAView 로 열어보겠습니다.
‘MZ’ 라는 매직넘버를 확인하실수 있습니다.
[리눅스 에서 보는 Magic Number]
[소스]
윈도우즈에서 확인한 것이랑 거의 차이가 없음을 알 수가 있습니다.
[elf.h 를 HEXAView 로 본화면]
elf.h 는 include 폴더에 들어있으므로 그냥 사용하면됩니다.
매직넘버가 16개가 나왔는데
왜 16개인지 는 아직 잘 모르겠습니다.
TCP/IP
IP주소와 포트 번호를 입력 하여 실행시키는 소스입니다.
[이소스를 hello_server.c 에 적용시키면]
server 쪽에는 빨간네모 친곳이 바뀌게 됩니다.
atoi(argv[1])은 포트 번호 자리가 1 번 자리 이기 때문입니다.
[이소스를 hello_client.c 에 적용시키면]
client 쪽에 빨간네모 친 곳이 바뀐곳입니다.
server 쪽을 실행시킨모습
client 쪽을 실행시킨 결과
입니다.
내용이 많이 부족한 점이 많습니다.
여러분들이 많이 지적해주시고 고치도록 하겠습니다.