본문 바로가기

Linux/C

[linux] 포인터#3

=====================================================================
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
 :
 :
-- 디버깅 --
=====================================================================


'Linux > C' 카테고리의 다른 글

Call by Reference  (0) 2015.06.01
[linux] 포인터#2  (0) 2015.05.13
[linux] 포인터#1  (0) 2015.05.12
[linux] 명령행 인자를 이용한 프로그램 실행  (0) 2015.05.11
[linux] 반복문( while )  (0) 2015.05.11