구구단 출력 시
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 |