본문 바로가기

c언어/자료

c언어 6일차

 

 

포인터와 배열의 차이점은 포인터(변수)와 배열(상수)

 

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

 

// 포인터

 

#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문 사용

 

 

은행 입출금 관리 프로그램 개발 프로젝트

 

 

'c언어 > 자료' 카테고리의 다른 글

c언어 8일차  (0) 2014.05.04
c언어 7일차  (0) 2014.05.03
c언어 5일차  (0) 2014.04.26
c언어 4일차  (0) 2014.04.20
c언어 3일차  (0) 2014.04.19