3월26일 (수학함수 포인터)

2010. 3. 26. 10:002010년/3월

 
-수학함수-
수학함수를 사용하기 위해서 math.h 파일을 이용한다.
double sqrt(double x) : 제곱근
double log(double  x) :  loge(x)
double  log10(double  x) : log10(x)
doulble  pow(double x,doubley):x^y
double  ceil(double   x): X보다 큰  가장 작은  정수
double floor(double x): X보다 적은 가장 큰  정수
int a bs(inx):  절대값

-함수포인터-
#include<stdio.h>
void
  test(int);
int main()
{
  void (*fp)(int)=0;
  int(*myprint)(const char*,...)=0;
  int iNum=7;
  int iNum2=0;
  fp=&test;
  myprint=printf;
  myprint("한글\n");
  fp(8);  
  test(7);


  return 0;
}
void test(int iNum)
{
  fprintf(stdout,"[%d]\n",iNum);
}


printf()함수의 형태를 찾아서 알고 다음 myprint를 똑같이 만들어서  넣어서myprint로  printf처럼 만들어서 사용하다~ 얏호~

-배열과 포인터-
#include<stdio.h>
int
 main()
{
  int  isel=0;
  int  iaNum[5];
  int inum=0;
  iaNum[0]=7;
  printf("%d\n",iaNum[0]);
  *(iaNum+1)=8;
  printf("%d\n",iaNum[0]);
  iaNum[3]=9;
  printf("%d\n",iaNum[3]);
  *(iaNum+4)=10;
  printf("%d\n",iaNum[3]);
  return 0;
}



배열 iaNum[5]가 생성되기전에 isel의 주소값이12FF7C로  제일 큰값이 잡힌다. 하지만  배열을 잡을경우  배열의 주소값은 아래서 위로 가는것이 아니라 배열의 크기만큼 잡아서 제일  작은값이  배열의 주소가 된다  그리고 inum값이 잡힌걸 알수있다. iaNum의주소값을 구하게 되면 iaNum[0]12FF68이  되게 된다 웃긴것은 iaNum은 보기에는 변수같은 결국에는 주소값이다. 예를 들면
iaNum=>12FF68 이라고 보면된다 ㅎㅎ  물론 iaNum[1]은 iaNum+1  로 4바이트 증가된것을 알수 있다. iaNum가 변수가 아니고 정해진 상수값.. 주소값이기 때문에 우리가 사용하는 포인터처럼 사용할수 있다.  냠냠~

'2010년 > 3월' 카테고리의 다른 글

3월 30일 문자열/구조체  (0) 2010.03.30
3월 29일 배열  (0) 2010.03.29
3월25일 함수와 스택구조  (0) 2010.03.25
3월 24일 함수와redirection  (0) 2010.03.24
3월23일 indirection 파일입출력  (0) 2010.03.23