본문 바로가기

C

19강.함수 포인터와 void포인터

[함수포인터]

[함수 포인터의 이해]

int aaa(int a,int b)

  • aaa는 값이 0x1000인 상수 포인터 .
  • 해당 번지에는 함수 호출시 실행 될 내용이 저장되어 있다.

fct(1,2)이라하면 fct 함수를 호출하며 1,2 인자를 전달 해당 함수포인터가 가리키는 메모리 공간에

함수를 호출하며 인자 전달

 

[함수이름의 포인터 타입을 결정짓는 요소]

리턴 타입 + 매개변수

=> int (*fPtr) (int) 는 리턴값이 int 이고 int를 인자로 받는 모든 함수를 받는 포인터이다.

 

[void포인터]

[void 포인터]

자료형에 대한 정보가 제외된 , 주소 정보를 담을 수 있는 형태의 변수

포인터 연산 / 메모리 참조 관련 일에 활용 할 수 없다.

int main(void)
{
	char c='c';
    int n=3;
    
    void * vp;
    vp=&c;
    vp=&n;
    *vp=20;	//Error
    vp++;	//Error
    
}

[main 함수]

[main 함수의 인자 전달]

프로그램 실행시 main 함수로 전달할 인자의 열거가 가능하다.

argc / argv 로 인자를 전달 받을 수 있도록 제한된 형태의 매개변수 선언이 가능하다.

int main(int argc,char ** argv)
{
	int i=0;
    printf("전달된 문자열의 수 : %d\n",argc);
    for(int i=0;i<argc;i++)
    {
    printf("%d번째 문자열 : %s\n",i,argv[i]);
    return 0;
    }
}

해당 소스코드가 있을 때 컴파일을 커쳐 .exe 인 실행파일 생성후 , 

Cmd를 통해 실행시 전달 인자를 전달하면 된다. 

이때 문자열은 공백을 기준으로 구분되며 , 공백을 포함하고 싶다면 ""으로 묶어서 표현한다.

 

이때 cmd를 이용하여 실행해야 한다.

[cmd]

  • cd..  <상위 폴더로 이동>
  • cd/  <최상위 폴더로 이동>
  • cd tab누르기 <폴더 선택>