=====================================================================
LAB> pointer 예제 9
- strlen 함수를 구현해보자.
함수 원형
#include <string.h>
size_t strlen(const char *s);
사용자 정의함수 : char *Strrchr(const char *s, int c);
-- strlentest.c --
#include <stdio.h>
#include <string.h>
int main()
{
char message[] = "Hello World";
printf("message length = %d \n", strlen(message));
return 0;
}
-- strlentest.c --
-- 실행결과 --
message length = 11
-- 실행결과 --
-- point9.c --
#include <stdio.h>
size_t Strlen(const char *s); // 함수 선언
int main()
{
char os[] = "Linux";
printf("os = %s \n", os);
printf("os length = %d \n", Strlen(os)); // 함수 호출
return 0;
}
size_t Strlen(const char *s); // 함수 정의
{
// 여러분들이 코딩하는 부분
}
-- point9.c --
-- 실행결과 --
os length = 5
-- 실행결과 --
=====================================================================
=====================================================================
void test1(char a, int i);
void (*test1p)(char,int)
int test2(int a, int b, int c)
int (*test2p)(int,int,int)
int i;
int *p;
p = &i;
int sum(int a, int b);
int (*p)(int, int);
p = sum;
-- funcpoint1.c --
#include <stdio.h>
int sum(int a, int b)
{
return a + b;
}
int main()
{
int (*sump)(int,int);
sump = sum;
printf("1 + 2 = %d \n", sum(1,2));
printf("3 + 5 = %d \n", sump(3,5));
return 0;
}
-- funcpoint1.c --
-- 실행결과 --
1 + 2 = 3
3 + 5 = 8
-- 실행결과 --
-- 디버깅 --
b main
r
n
(gdb) print sump
$1 = (int (*)(int, int)) 0x80483a4 <sum>
(gdb) disassemble sum
Dump of assembler code for function sum:
0x080483a4 <sum+0>: push %ebp
0x080483a5 <sum+1>: mov %esp,%ebp
:
:
-- 디버깅 --
=====================================================================