-------------------------------------------------------------------------------------------------------------
// 변함 없음 (1)
#include <stdio.h>
void pswap(int *p1, int *p2);
int main(void)
{
int A=10, B=20;
int *pA, *pB;
pA=&A, pB=&B;
pswap(pA, pB);
//함수 호출후
printf("pA가 가리키는 변수 : %d \n",*pA);
printf("pB가 가리키는 변수 : %d \n",*pB);
return 0;
}
void pswap(int *p1, int *p2)
{
int *temp;
temp = p1;
p1=p2;
p2=temp;
}
-------------------------------------------------------------------------------------------------------------
//값 바꾸기 (2) **p 포인트 변수의 주소
#include <stdio.h>
void pswap(int **p1, int **p2);
int main(void)
{
int A=10, B=20;
int *pA, *pB;
pA=&A, pB=&B;
pswap(&pA, &pB);
//함수 호출후
printf("pA가 가리키는 변수 : %d \n",*pA);
printf("pB가 가리키는 변수 : %d \n",*pB);
return 0;
}
void pswap(int **p1, int **p2)
{
int *temp;
temp = *p1;
*p1=*p2;
*p2=temp;
}
-------------------------------------------------------------------------------------------------------------
/* main함수에 두개의 int 형 포인터와 길이가 5인 배열선언
5개 정수를 사용자로 입력 > 배열로 저장
최대값 최소값 출력 포인트 포인트 */
#include <stdio.h>
void MexMin(int *arr, int size, int **mx, int **mn);
int main(void)
{
int arr[5];
int *max, *min;
int i;
for(i=0; i<5; i++)
{
printf("정수 입력: ");
scanf("%d", &arr[i]);
}
MexMin(arr, sizeof(arr)/sizeof(int), &max, &min);
printf("최대: %d, 최소 : %d \n",*max, *min);
return 0;
}
void MexMin(int *arr, int size, int **mx, int **mn)
{
int i;
int *max, *min;
max=min=arr;
for(i=0; i<size; i++)
{
if(*max<arr[i])
max=&arr[i];
if(*min>arr[i])
min=&arr[i];
}
*mx=max;
*mn=min;
}
-------------------------------------------------------------------------------------------------------------
#include <stdio.h>
void show_data();
void main(void)
{
int arr1[2][4] ={1,2,3,4,5,6,7,8};
int arr2[3][4]= {{1},{2},{3}};
show_data(arr1,2);
show_data(arr2,3);
}
void show_data(int(*ptr)[4],int a) // 매개 변수만 허용 ( int *ptr2[][4] )
{
int i,j;
for(i=0;i<a;i++){
for(j=0;j<4;j++)
printf("%d",ptr[i][j]);
printf("\n");
}
}
-------------------------------------------------------------------------------------------------------------
#include <stdio.h>
void add(int a, int b);
void SPrint(char * str);
void main(void)
{
char *string = "Function Pointer";
int a= 10, b= 20;
void (*fPtr1)(int, int)=add;
void (*fPtr2)(char*)=SPrint;
fPtr1 (a,b);
fPtr2 (string);
}
void add(int a, int b)
{
printf("덧셈 결과 : %d \n", a+b);
}
void SPrint(char* str)
{
printf("입력된 문자열 : %s \n", str);
}
-------------------------------------------------------------------------------------------------------------
#include <stdio.h>
void add(void);
void q(int s);
void min(void);
void main(void)
{
int sel;
while(1){
printf("선택 : 덧셈(1), 뺄셈(2),종료(3)");
scanf("%d",&sel);
if(sel==3)
break;
q(sel);
}
printf("프로그램이 종료 되었습니다. \n");
return 0;
}
void q(int s)
{
void (*fPtr)(void);
if(s==1) fPtr=add;
else fPtr=min;
fPtr();
}
void add(void)
{
int a,b;
printf("덧셈 숫자 두개 입력:");
scanf("%d %d",&a,&b);
printf("결과 : %d \n", a+b);
}
void min(void)
{
int a,b;
printf("뺄셈 숫자 두개 입력:");
scanf("%d %d",&a,&b);
printf("결과 : %d \n", a-b);
}
-------------------------------------------------------------------------------------------------------------
// cmd 로 실행 해당 폴더 가서 파일이름 작성후 문자 작성
#include <stdio.h>
int main(int argc,char **argv)
{
int i = 0;
printf("전달된 문자열의 수 : %d \n",argc);
for(i=0;i<argc;i++)
printf("%d번째 문자열 :%s \n",i+1, argv[i]);
return 0;
}
-------------------------------------------------------------------------------------------------------------
#include <stdio.h>
struct person{
char name[20];
char phone[20];
};
int main()
{
struct person man={"하나","둘"};
struct person *pman;
pman=&man;
//구조체 변수를 이용한 출력
printf("name: %s\n",man.name);
printf("phone:%s\n",man.phone);
//구조체 포인터를 이용한 출력
printf("name: %s\n",(*pman).name);
printf("phone:%s\n",(*pman).phone);
// 구조체 포인터를 이용한 출력 2
printf("name: %s\n",pman->name);
printf("phone:%s\n",pman->phone);
}
-------------------------------------------------------------------------------------------------------------
#include <stdio.h>
struct person{
char name[20];
char phone[20];
};
int main()
{
struct person arr[3]={0,};
int i;
for(i=0;i<3;i++){
printf("이름 , 전화번호 순으로 입력:");
scanf("%s %s",arr[i].name,arr[i].phone);
}
printf("\n입력 결과 :\n");
for(i=0;i<3;i++){
printf("이름: %s",arr[i].name);
printf("전화번호 : %s \n",arr[i].phone);
}
return 0;
}
-------------------------------------------------------------------------------------------------------------
#include <stdio.h>
struct a{
char addr[30];
char tel[20];
};
struct b{
char name[20];
char pid[20];
struct a*info;
};
int main()
{
struct a info ={"하나", "둘"};
struct b man={"셋","넷"};
man.info=&info;
printf("1: %s\n", man.name);
printf("2: %s\n", man.pid);
printf("3: %s\n", man.info->addr);
printf("4: %s\n", man.info->tel);
return 0;
}
-------------------------------------------------------------------------------------------------------------