포인터와 배열의 차이점은 포인터(변수)와 배열(상수)
-------------------------------------------------------------------------------------------------------------
// 포인터
#include <stdio.h>
int main(void)
{
int a= 2005;
int *pA=&a;
printf("pA :%d\n",pA);
printf("&a :%d\n",&a);
(*pA)++; // a++ 와 같은 의미 < 이걸 쓰면 됨
printf("a: %d \n",a);
printf("*pA: %d \n",*pA);
return 0;
}
-------------------------------------------------------------------------------------------------------------
// 포인터
#include <stdio.h>
int main(void)
{
int a= 10;
int *pA = &a;
double e = 3.14;
double *pE=&e;
printf("%d \n\n %f",*pA,*pE );
return 0;
}
-------------------------------------------------------------------------------------------------------------
//주소
#include <stdio.h>
int main(void)
{
int a[5]={0,1,2,3,4};
printf("%d, %d \n",a[0],a[1]);
printf("%d 번지 , %d 번지 \n", &a[0],&a[1]);//주소
printf("배열 이름 : %d \n",a); //배열의 첫번째가 주소값
return 0;
}
-------------------------------------------------------------------------------------------------------------
// 배열 과 포인터를 같이 사용할수 있다.
#include <stdio.h>
int main(void)
{
int arr[3]={0,1,2};
int* ptr;
ptr=arr;
printf("%d, %d , %d\n", ptr[0],ptr[1],ptr[2]);
return 0;
}
-------------------------------------------------------------------------------------------------------------
//포인터 자료형마다 저장 바이트 수가 달라짐
#include <stdio.h>
int main(void)
{
int * ptr1=0;
char*ptr2=0;
double* ptr3=0;
printf("%d번지,%d번지,%d번지 \n", ptr1++,ptr2++,ptr3++);
printf("%d번지,%d번지,%d번지 \n", ptr1,ptr2,ptr3); //4,1,8
return 0;
}
// 4바이트 증가해서 주소값찾기
#include <stdio.h>
int main(void)
{
int arr[5]={1,2,3,4,5};
int *pArr = arr;
printf("%d \n", *pArr);
printf("%d \n",*(++pArr));
printf("%d \n",*(++pArr));
printf("%d \n",*(pArr+1));
printf("%d \n",*(pArr+2));
return 0;
}
-------------------------------------------------------------------------------------------------------------
#include <stdio.h>
int main(void)
{
int arr[2]={1,2};
int *pArr = arr;
printf("%d, %d\n", arr[0],*(arr+1));
printf("%d, %d\n",pArr[0], *(pArr+1));
return 0;
}
-------------------------------------------------------------------------------------------------------------
#include <stdio.h>
int main(void)
{
char str1[5]="abcd";
char *str2 ="ABCD";
printf("%s\n",str1);
printf("%s\n",str2);
str1[0]='x';
//str2[0]='x'; // 에러남
printf("%s \n", str1);
printf("%s \n", str2);
return 0;
}
-------------------------------------------------------------------------------------------------------------
#include <stdio.h>
int main(void)
{
int a = 10, b= 20, c= 30;
int *arr[3]={&a,&b,&c};
printf("%d \n",*arr[0]);
printf("%d \n",*arr[1]);
printf("%d \n",*arr[2]);
return 0;
}
-------------------------------------------------------------------------------------------------------------
#include <stdio.h>
int main(void)
{
char* arr[3]={
"컴퓨터","노트북","핸드폰"
};
printf("%s \n",arr[0]);
printf("%s \n",arr[1]);
printf("%s \n",arr[2]);
return 0;
}
-------------------------------------------------------------------------------------------------------------
/* 크기가 5인 int 형 배열 arr 선언하고, 12345로 초기화 한다
p를 선언해서 배열 arr 첫번째 요소를 가리키게 한다
그다음 for 을 사용하여 배열요소의 값을 2씩증가 */
#include <stdio.h>
int main(void)
{
int arr[5]={1,2,3,4,5};
int *p =arr;
int i;
for(i=0; i<5; i++)
p[i]+=2;
for(i=0; i<5; i++)
printf("%d ", p[i]);
return 0;
}
-------------------------------------------------------------------------------------------------------------
// 12345 배열로지정 포인트 사용해서 뒤로 출력 하게 할것
#include <stdio.h>
int main(void)
{
int arr[5]={1,2,3,4,5};
int *p =arr;
int i, temp;
for(i=0; i<4-i; i++)
{
temp=p[i];
p[i]=p[4-i];
p[4-i]=temp;
}
for(i=0; i<5; i++)
printf("%d ", p[i]);
return 0;
}
-------------------------------------------------------------------------------------------------------------
//배열의 함수 인자 전달 방식
#include <stdio.h>
void fct(int * arr2);
int main(void)
{
int arr1[2]={1,2};
fct(arr1);
printf("%d \n",arr1[0]);
return 0;
}
void fct(int *arr2)
{
printf("%d \n",arr2[0]);
arr2[0]=3;
}
-------------------------------------------------------------------------------------------------------------
#include <stdio.h>
int main(void)
{
int arr[5];
int * pArr=arr;
printf("%d \n", sizeof(arr));
printf("%d \n", sizeof(pArr));
return 0;
}
-------------------------------------------------------------------------------------------------------------
#include <stdio.h>
int add(int a, int b);
int main(void)
{
int val1= 10;
int val2= 20;
printf(" 결과 : %d ",add(val1,val2));
return 0;
}
int add(int a, int b)
{
return a+b;
}
-------------------------------------------------------------------------------------------------------------
// call - by - value
#include <stdio.h>
void swap();
int main(void)
{
int val1= 10;
int val2= 20;
swap(val1,val2);
printf("val1:%d \n ",val1);
printf("val2:%d \n",val2);
return 0;
}
void swap(int a, int b)
{
int temp=a;
a=b;
b=temp;
printf("a:%d \n",a);
printf("b:%d \n",b);
}
-------------------------------------------------------------------------------------------------------------
#include <stdio.h>
void swap();
int main(void)
{
int val1= 10;
int val2= 20;
printf("Before val1:%d \n ",val1);
printf("Before val2:%d \n",val2);
swap(&val1,&val2);
printf("After va11:%d \n ",val1);
printf("After va12:%d \n",val2);
return 0;
}
void swap(int *a, int *b)
{
int temp=*a;
*a=*b;
*b=temp;
}
/* 정수를 입력받아 변수 a저장
입력받은 값의 제곱을 계산해서 a대입해 주는 프로그램
입력받은 값의 제곱을 계산하는 함수 call - by - value 에 구현 */
#include <stdio.h>
int Square(int n)
{
return n*n;
}
int main(void)
{
int a;
printf("정수 입력: ");
scanf("%d",&a);
a=Square(a);
printf("연산 결과 : %d \n",a);
return 0;
}
-------------------------------------------------------------------------------------------------------------
// 정수 하나 입력 받고 a에 저장 입력 받은값을 제곱으로 계산 call- by - reference
#include <stdio.h>
int Square(int *pA)
{
*pA =(*pA)*(*pA);
}
int main(void)
{
int a;
printf("정수 입력: ");
scanf("%d",&a);
Square(&a);
printf("연산 결과 : %d \n",a);
return 0;
}
-------------------------------------------------------------------------------------------------------------
// 세개의 정수값을 각각 변수 call- by - reference
#include <stdio.h>
void swap(int *pA, int *pB, int *pC)
{
int temp=*pA;
*pA=*pC;
*pC=*pB;
*pB=temp;
}
int main(void)
{
int a= 10, b = 20, c=30;
swap(&a, &b, &c);
printf("%d %d %d \n",a,b,c);
return 0;
}
-------------------------------------------------------------------------------------------------------------
#include <stdio.h>
int main(void)
{
int arr[4][2],i,j;
for(i=0;i<4;i++){
for(j=0;j<2;j++){
printf("arr배열의 %d의 %d번째 입력 :",i,j);
scanf("%d",&arr[i][j]);
}
}
for(i=0;i<4;i++){
for(j=0;j<2;j++){
printf("arr[%d][%d]=%d\t",i,j,arr[i][j]);
}
printf("\n");
}
return 0;
}
-------------------------------------------------------------------------------------------------------------
#include <stdio.h>
int main(void)
{
int a,b;
int arr[3][3]={{1,2,3},{4,5,6},{7,8,9}};
for(a=0;a<3;a++)
for(b=0;b<3;b++)
printf("%d \n",arr[a][b]);
return 0;
}
-------------------------------------------------------------------------------------------------------------
#include <stdio.h>
int main(void)
{
int a,b;
int arr[3][3]={{1},{4,5},{7,8,9}};
for(a=0;a<3;a++)
for(b=0;b<3;b++)
printf("%d \n",arr[a][b]);
return 0;
}
-------------------------------------------------------------------------------------------------------------
#include <stdio.h>
int main(void)
{
int a,b;
int arr[3][3]={1,2,3,4,5,6,7};
for(a=0;a<3;a++)
for(b=0;b<3;b++)
printf("%d \n",arr[a][b]);
return 0;
}
-------------------------------------------------------------------------------------------------------------
#include <stdio.h>
int main(void)
{
int a,b;
int arr[3][3]={1,};
for(a=0;a<3;a++)
for(b=0;b<3;b++)
printf("%d \n",arr[a][b]);
return 0;
}
-------------------------------------------------------------------------------------------------------------
3*9 int 형 2차원 배열 선언
4단까지 구구단 결과 출력
-------------------------------------------------------------------------------------------------------------
2*4배열에 12345678 값
이값을 4*2배열에 넣는 프로그램 작성 이중 for 이용
-------------------------------------------------------------------------------------------------------------
4*2 배열에 for문 하나 출력은 이중 for문 사용
은행 입출금 관리 프로그램 개발 프로젝트