블로그 이미지
송시혁

calendar

1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30

Notice

Tag

Recent Post

Recent Comment

Recent Trackback

Archive


         
         
         



배열이 2행이상으로 이루어진 배열이다.


만약에 (3, 4)이면 3번째 열에 4번째 부분이다. 


각 주소마다 


&array = &array +1 배열의 전체 크기

  array= array +1 배열의 한 줄, 한 행.

array[0] =  array[0] +1인 경우 그행의 1개를 이동




#include <stdio.h>
int main()
{
  int i;
  int j;
  
  int array[3][4={{15,23,45,56},
        {34527623},
        {43629184}};       
  
  for(i = 0; i<3; i= i+1)
  {
    for(j=0; j<4; j= j +1)
       {
      printf("%d ", array[i][j]);
    }
  

  printf("\n");
  }

  printf("%08x\n", array);
  printf("%08x\n", array+1);
  printf("%08x\n", array+2);
  printf("%08x\n"&array+1);
  putchar('\n');
  printf("%08x\n", array[0]);
  printf("%08x\n", array[1]);
  printf("%08x\n", array[2]); 
  putchar('\n');
  printf("%08x\n", array[0]+1);
  printf("%08x\n", array[1]+1);
  printf("%08x\n", array[2]+1); 
  return 0;
}






posted by 송시혁

























posted by 송시혁

터보 C프로그램.


압축을 푼다.

 

그리고 같은경로에 도스창을 띄어 chcp 437(영문)을 입력한뒤  설치한다.

chcp 956(한글)



F2 - 저장.

F10= 메뉴

ctrl + F9 = 컴파일

ctrl + F8 = break point

dos shell = 도스창 나온다.

debug - watch(enter)- add watch - 변수 입력

alt + x= 종료

tcc.exe = 실제 컴파일러


posted by 송시혁

앞의 숫자와 뒤의 숫자를 비교하여 자리를 바꿔는 정렬.


내림차순으로 바꿀수도 있고 오름차순으로 바꿀수도있다.


다음은 관련예제.





#include <stdio.h>
void bubble_sort (int *array, int count);
void swap (int *px, int *py);
void printVector(int V[], int n);

int main()
{
  int vector[5= {5, 4, 3, 2, 1};
  bubble_sort (vector, sizeof(vector)/sizeof(vector[0]) );
    
}

void bubble_sort (int array[], int count)
//void bubble_sort (int *array, int count)
{
   int i;
   int j;

   printf("array : %d\n"sizeof(array));
  //array = &i;// array는 포인터!

   for(i = 0; i < count-1; i++)//전체도는 회수,count
   {
      for(j= 0; j<count -1 -i; j++)//세로줄 도는 회수
      {
         if(array[j] < array[j + 1])
         {
           swap(&array[j], &array[j + 1]);
           printVector (array, count);
         }
      }
      printf("\n");
  }

}
  

void swap (int *px, int *py)
{
  int temp;//위치바꾸기 위한 변수.
  temp = *px;
  *px = *py;
  *py= temp;
}

void printVector (int V[], int n)
{

  int i;
  for(i =0; i< n; i++)
  {
    printf("%5d", V[i]);
  }
  printf("\n");
}
          







posted by 송시혁









다양한 배열과 포인터 표기법을 이용하여 출력을 하였다.



#include <stdio.h>
int main()
{
  int i;
  int *p;
  int score[10];
  int sum;

  p = score;
  printf("%08x, %08x\n", p, score);
  for(i = 0; i<=4; i= i +1)
  {
    score[i] = i*10;
  }
  for(i= 0; i<=4; i= i+1)
  {
    printf("score[%d] = %d\n", i, score[i]);
  }
    printf("\n");

  sum = 0;
  for(p = score; p<= &score[4]; p=p+1)
  {
    sum = sum + *p;
  }    
    printf("Method 1: %d\n", sum);
  
  sum =0;
  for(i= 0; i<5; i = i+1)
  {
    sum = sum + *(score +i);

  }
  printf("Method 2: %d\n", sum);

  sum =0;
  for(i = 0; i<5; i=i+1)
  {
    sum = sum + score[i];
  }

  printf("Method 3: %d\n", sum);



  sum =0;
  p = score; // 포인터가 종료함에 따라 다시 선언.
  for(i = 0; i<5; i=i+1)
  {
    sum = sum + p[i];
  }

  printf("Method 4: %d\n", sum);
  
  return 0;

}




posted by 송시혁





 이름
주소
이름
주소
Int
i
0012FF5c
Int(*)()
Main
0040
Int[]
(int *)
Score
0012FF5c
Int(*)(const char*,)
Printf
0040



배열은 주소값을 갖는 상수.

포인터 주소값을 갖는 변수.


주소 = 1; 주소가 값을 가질 수 없다.

*(주소)=1;

*(score)=1;


1. 포인터 변수= *(p+1)

2.배열을 포인터= *(score +i)

3.배열인덱스 =score[i]

4.포인터 변수를 배열 인덱스= p[i]


1,2번은 포인터형 3,4번은 배열적인 형태


posted by 송시혁

예제 7-2.c



#include <stdio.h>
int main()
{
  int i;
  int rose[5= {7897568466};
  int narcissus[] = {789756846643};
  int violet[5= {879756, };
  

  for(i= 0; i<=4; i++)
  {
    printf("%6d", rose[i]);
  }
  printf("\n");

  for(i= 0; i<=5; i++)
  {
    printf("%6d", narcissus[i]);
  }
  printf("\n");


  for(i= 0; i<=4; i++)
  {
    printf("%6d", violet[i]);
  }
  printf("\n");
  


  return 0;
}  






posted by 송시혁



배열의 초기화는 중괄호를 사용한다.


int score[10]= {1,2, 3, 4, ...., 10}


배열의 개수가 부족시 0으로 채운다.


int score[10]= {1,2, 3, 4}이면


출력시 1 2 3 4 0 0 0 0 0 0이 된다.


*컴파일러는 배열의 갯수를 우선시 한다*


posted by 송시혁





#include <stdio.h>
int main()
{
  int score[10];
  int i;
  int sum;
  float average;
  
  printf("score: %08x\n", score);

  printf("i: %08x\n"&i);
  printf("sum :%08x\n"&sum);
  printf("average :%08x\n"&average);  

  for(i=0; i<9; i= i+1)
  {
    
    printf("score : %08x\n"&score[i]);

  }


  printf("주소? : %08x\n", score);
  printf("주소? : %08x\n"&score[0]);
  printf("주소? : %08x\n"&*score);

  *(score +1= 99;
  printf("%d\n", score[1]);

  return 0;
}

여기서 score, &score, &*score는 같은 주소값을 가지고 있다는 것을
알 수 있다.




posted by 송시혁

int score[50] =1;




0부터 49까지의 인덱스.


score[10]이면  0부터 9까지 





int score[10]와 포인터 변수 int *p


자료형

이름

주소

int*

score[10]

score

(0012ff48)

[10]

int*

*p

p

0012ff48

*



상쇄

&*score= &*상쇄 = score 

score[0]=&score= &*score = score= (같은 주소값출력.)




주의사항.

score = p; => 컴파일 안됨.


score자체는 배열의 주소값을 갖는 상수. 

상수에 대입하는것은 불가능하다.




p = score;


score[2] =99;라고 가정



score[ ]


 score[0]

 score[1]

  score[2]

=99

.

.

.

.

 score[9]



*(score +1)= score[0]주소에서 +1하면 score[2]의 주소값


주소값이 4바이트 만큼 더해진다. 


*(p+1) = *(score +1) 같은결과, 주소값.

score[2] = p[2] 같은값을 같는다.








posted by 송시혁
prev 1 2 3 4 next