2014. 8. 26. 17:19
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.


구구단 출력 시


if(a>b){

   tmp=a;

   a=b;

   b=tmp;       //swap part

}


while(a<=b){

a++;

}



-----------------




#include <stdio.h>

#include <string.h>


void F23(FILE* fst){ 

char data[30]={0};

printf("input name : ");

scanf("%s", data);

fwrite(data, strlen(data),1,fst);

}


int main(){

FILE * fst;

char path[30]={0};


printf("input path : ");

gets(path);  //a.txt


fst =fopen(path, "w");

if(fst!=NULL){

F23(fst);

}

fclose(fst);

return 0;

}


// 비쥬얼 스투디오 기본 폴더에 저장됨 \ProgramFiles ...




--------------


- call by value (값에 의한 전달)


void Swap(int a,int b){

int tmp;

printf("[2] : x=%d, y=%d\n",a,b);


tmp=a;

a=b;

b=tmp;


printf("[3] : x=%d, y=%d\n",a,b);


}


void main(){

int x=10,y=20;

printf("[1] : x=%d, y=%d\n",x,y);


Swap(x,y);

printf("[4] : x=%d, y=%d\n", x,y);


}


* 함수에서 소멸된 변수 값은 main으로 오지 않는다 


--------


- call by address (주조에 의한 전달)



void Swap(int *a, int * b){

int tmp;

printf("[2] : x =%d, y= %d\n",*a,*b);   //역참조 연산자 * 

-> 포인터 변수가 가리키는 값

tmp=*a;

*a=*b;

*b=tmp;


printf("[3] : x =%d, y= %d\n",*a,*b);


}


void main(){

int x=10,y=20;

printf("[1] : x =%d, y=%d\n", x,y);

Swap(&x,&y);

printf("[4] : x =%d, y=%d\n", x,y);

}



* 주소로 지정하여 변화된 값은 main 함수에 적용된다 



--------




-포인터 

메모리 공간을 가리키는 주소 값




- 포인터 변수 


주소 저장 공간, 

메모리 공간을 가리키는 주소 값을 저장하는 공간 



int main(){

   int * pdata1;      // 4byte   int형태의 주소 수용

   char * pdata2;   // 4byte   char 형태의 주소 수용

   void * pdata3;   // 4byte   모든 형태의 주소를 수용 

-> 사용할때는 반드시 casting을 하고 사용 해야 함

   return 0;

}





* 포인터 변수는 자료형에 관계없이 무조건 4 byte


* 64bit 주소 체계에서는 8byte로 지정 됨


* 포인터를 가리킨 지점에서 몇 byte를 읽을 것인가를 지정하기 위해 

   포인터 변수 선언시 자료형을 함께 선언해 줌 


* void 는 지정된 주소로 이동후 얼마를 읽어들일지를 모르기 때문에 casting을 해 줌 

   -> 쓰는 이유는 malloc()



& 주소 연산자

* 역참조 연산자 


----



int main(){

int a=1;

int b=2;

char c ='z';


int * pA;

int * pB;

char * pC;


pA=&a;

pB=&b;

pC=&c;


// printf("pA : 0x%08X \n", pA);

// printf("pB : 0x%08X \n", pB);

// printf("pC : 0x%08X \n", pC);   // pC변수가 가지는 주소값이 출력


printf("pA : %d \n", *pA);

printf("pB : %d \n", *pB);

printf("pC : %d \n", *pC);  // pC변수가 가지는 주소값을 따라간 곳에 있는 값 출력


return 0;

}



-------------


*  -> 포인트 변수 선언시 사용

   -> 역참조 연산자로 사용

   -> 곱하기 연산 







'C / C++' 카테고리의 다른 글

many questions  (0) 2014.08.28
pointer and array  (0) 2014.08.27
making codes  (0) 2014.08.25
functions made by myself  (0) 2014.08.20
FILE output coding  (0) 2014.08.18
Posted by af334