fork download
  1. #include<stdio.h>
  2. void func(int *);
  3. int main(){
  4. int ary[5];
  5. int *ap=ary; //
  6. int n=1;
  7. for(int i=0; i<5; i++)
  8. *(ap+i) = n++; // 포인터 표현법
  9. //ap[i] = n++; //배열 표현법
  10. //ary[i] = n++; //배열 표현법
  11. func(ary); //배열명이 포인터
  12. return 0;
  13. }
  14. void func(int *ap){ //포인터 변수로 배열의 시작 주소를 받아줘야 함
  15. for(int i=0; i<5; i++)
  16. printf("%d ", *(ap+i)); //포인터 표현법
  17. printf("\n");
  18. for(int i=0; i<5; i++)
  19. printf("%d ", ap[i]); //배열 표현법
  20.  
  21. }
  22.  
  23.  
  24.  
  25.  
  26.  
  27. /*
  28. #include<stdio.h>
  29. void swap1(int,int);
  30. void swap2(int*, int *);
  31. int main(){
  32.   int a=10, b=20;
  33.   printf("%d %d\n", a,b); //10 20
  34.   swap1(a, b); //값을 인수로 보냄
  35.   printf("call by value : %d %d\n", a,b); //10 20
  36.   swap2(&a, &b); //주소를 인수로 보냄
  37.   printf("call by reference : %d %d", a,b); //20 10
  38.   return 0; //
  39. }
  40. void swap2(int *ap, int *bp){ //int *ap = &a; int *bp=&b; ::call by reference
  41.   int temp;
  42.   temp = *ap; //main()함수의 a의 값을 swap2()함수의 지역변수 temp에 대입
  43.   *ap = *bp ; //main()함수의 b의 값을 main()함수의 a의 값으로 대입
  44.   *bp = temp; //main()함수의 b의 값으로 temp가 가지고 있는 10을 대입
  45. }
  46. void swap1(int a, int b){ //int a=10, int b=20; copy ::call by value
  47.   int temp;
  48.   temp=a; //a 10, temp 10 :: 매개변수 a의 값을 지역변수 temp의 값으로 대입
  49.   a=b; //a 20, b 20
  50.   b=temp; //b 10, temp 10
  51. }
  52. */
  53.  
  54.  
  55.  
  56.  
  57.  
  58.  
  59.  
  60.  
  61.  
  62.  
  63.  
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. /*
  71. #include<stdio.h>
  72.  
  73. int main(){
  74.   int ary1[5]={10,20,30,40,50};
  75.   int *ap1=ary1; //
  76.   int p1;
  77.   for(int i=0; i<5; i++){
  78.   p1 = *ap1++; //*(ap1+0)의 값을 p1에 저장하고 ap1+1로 주소 증가 :: ap1 == ary1
  79.   printf("%u\t", p1);
  80.   }
  81.  
  82.   int ary2[5]={10,20,30,40,50};
  83.   int *ap2=ary2;
  84.   printf("\n");
  85.   int p2;
  86.   for(int i=0; i<5; i++){
  87.   p2 = (*ap2)++; //ap2가 가리키는 값을 증가
  88.   printf("%u\t", p2);
  89.   }
  90.  
  91.   int ary3[5]={10,20,30,40,50};
  92.   int *ap3=ary3;
  93.   printf("\n");
  94.   int p3;
  95.   for(int i=0; i<5; i++){
  96.   p3 = *++ap3; //ap3이 가르키는 주소를 증가시킨 후 그 곳의 값을 출력
  97.   printf("%u\t", p3);
  98.   }
  99.  
  100.   int ary4[5]={10,20,30,40,50};
  101.   int *ap4=ary4;
  102.   printf("\n");
  103.   int p4;
  104.   for(int i=0; i<5; i++){
  105.   p4 = ++*ap4; //*(ap4+0)의 값을 전치증가연산자로 증가시켜 출력
  106.   printf("%u\t", p4);
  107.   }
  108.   printf("\n");
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.   return 0;
  116. }
  117. */
  118.  
  119.  
  120.  
  121.  
  122.  
  123.  
  124.  
  125.  
  126.  
  127.  
  128.  
  129.  
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. //배열.
  137. //1.물리적주소가인접해있다.
  138. //2.인덱스는0부터시작 n-1
  139. //3.모든요소는 동일한 데이터 타입
  140. //4.배열명이 포인터(시작첫주소물리적주소)
  141. // 포인터::상수
  142. // 변수::변수
  143. /*
  144. int main(void) {
  145.   int num;
  146.   double db;
  147.   char ch; //문자.1바이트
  148.   char name[20]; //
  149.   int n[5]; //
  150.   ch='c';
  151.   name[0]='c'; // 10=20;
  152.   n[0]=20;
  153.   printf("Hello World\n");
  154.   return 0;
  155. }
  156. */
  157.  
Success #stdin #stdout 0.01s 5276KB
stdin
Standard input is empty
stdout
1 2 3 4 5 
1 2 3 4 5