#include<stdio.h>
void main()
{
   int i=0, j=0;
   int num[3][3] = {1,2,3,4,5,6,7,8,9};
   for(i=0; i<3; i++)
   {
      for(j=0; j<3; j++)
         {
             printf("num[%d][%d]=%d", i,j,num[i][j]);
          }
       printf(""\n");
    }
   }



*num 이라는 배열은 3개의 12바이트 공간을 한개의 요소로 갖는 일차원 배열.
 num[0]을 배열이름이라고 생각하고, 변수 3개를 갖는다고 생각하면됨.
 
● num   = &num[0] = &num[0][0] = 0000
    num1 =  &num[1] = &num[1][0] = 0012
 

'C > 난정말C Programming을 공부한적이없다고요' 카테고리의 다른 글

Call By Value  (0) 2011.08.17
다중포인터  (0) 2011.08.17
배열 and 포인터  (0) 2011.08.16
포인터  (0) 2011.08.16
변수의 공간할당  (0) 2011.08.16

#include<stdio.h>
void main()
{
   int arr[5]={1,2,3,4,5}'
   int i=0;
   for(i=0; i<5; i++)                                 for(i=0; i<5, i++)
   {                                 동일코드       {
      printf("%d",arr[i]);          〓                printf("%d",*(arr+i));
   }                                                     }
   printf("\n");
}


※배열이름은 배열의 첫번째 주소를 가지고있다.(포인터상수)


'C > 난정말C Programming을 공부한적이없다고요' 카테고리의 다른 글

다중포인터  (0) 2011.08.17
다차원 배열(이차원배열)  (0) 2011.08.16
포인터  (0) 2011.08.16
변수의 공간할당  (0) 2011.08.16
배열(문자)  (0) 2011.08.16
포인터란?   주소 그자체
 ①포인터는 메모리의 번지 주소.
 ②포인터 변수  메모리의 주소를 가지는 변수.
 ③포인터 변수의 크기는 4Byte 의 부호없는 정수형

◎포인터연산자
 ① &(주소연산자)는 변수의 메모리 주소를 표현해주는 연산자.
 ② *(참조자)      는 주소를 이용하여 변수값을 접근하는 연산자.
#include <stdio.h>
void main()
{
   int number =100;
   int *p;
   p= &number; 
   printf("p =%d \n",p);
   printf("*p = %d \n",*p);
}


《p= &number》
→p는 포인터 변수로 number의 주소값을 가지고 있다.
   p라는 포인터 변수가 가지는 값을 주소로 보고, 그값(number의 주소)을 참조해서 해당주소의
   실제값을 출력.







printf에서 *p라는 참조연산자를 실행한값은 p라는 퐁인터변수가 가지는 값을 주소로 보고 그값(주소)을
참조하여 한번더 들어간다는 뜻.

즉,  number값은 100                         p값은  0000 이라는 number의 주소값
    &number값은  0000(주소)            &p값은  0004 라는 포인터 변수의 p값
                                                    *p값은  0000 이라는 p값의 데이터를 참조해서 찾아간 number의 값


 

#include <stdio.h>
void main()
{
   char *p = "string";
   while (*p)
   {
      printf("%c,%d \n",*p,p);
      p++;
    }
}


p[]로 사용하던것을 *p로 선언!
while문에서 *p의 마지막인 Null값을 만나면 종료.
포인트 변수에 +1



*scanf로 받을시

#include<stdio.h>                                       #include<stdio.h>
void main()                                                void main()
{                                  (수정code)            {
   char *p;                             →                      char *p,arr[10];
   scanf("%s",p);                                             scanf("%s",arr);
   printf("%s",p);                                               p=arr;
}                                                                   printf("%s",p);
                                                                 }

                                                               《p=arr;》→배열의 이름(첫번째주소값)을 p에대입.   

    

 

'C > 난정말C Programming을 공부한적이없다고요' 카테고리의 다른 글

다차원 배열(이차원배열)  (0) 2011.08.16
배열 and 포인터  (0) 2011.08.16
변수의 공간할당  (0) 2011.08.16
배열(문자)  (0) 2011.08.16
배열(숫자)  (0) 2011.08.16
int arr[4] = {10,16,17,19};
int A=32;
int B=31;
int C=63;



 ↑메모리 할당   그림으로 표시


   주소  값
arr[0]  0000  10
arr[1]  0004  16
arr[2]  0008  17
arr[3]   0012  19
 A  0100  32
 B  0124  31
 C  0088  63
↑표로표시


pritnf ("%d",A)      ← 0100 주소에 있는 값출력
printf("%d",arr[3]) ← 0012 주소에 있는 값출력

⊙배열 이름은 배열의 첫번째 주소를 가지고있다!

 char arr[] = "test";
 printf("%d",arr[3]);


*arr[0+2]  → 's'가있는 공간 0002에 접근

'C > 난정말C Programming을 공부한적이없다고요' 카테고리의 다른 글

다차원 배열(이차원배열)  (0) 2011.08.16
배열 and 포인터  (0) 2011.08.16
포인터  (0) 2011.08.16
배열(문자)  (0) 2011.08.16
배열(숫자)  (0) 2011.08.16
"TEST 문자열"

#include <stdio.h>
void main()
{
  char arr[4] = {'T','E','S','T'};
  int i=0;
  for ( i=0; i<4; i++)
  { 
    printf("%c",arr[i]);
   }
}


 변수 arr[0]   arr[1] arr[2]  arr[3] 
 값  'T' 'E'  'S'  'T' 

※char arr[4] ="TEST"; 로 초기화시 문자열의 마지막에 \0 즉, Null 의 값이 들어감.
<Null 값이 들어있지않을시에 Null값을 만날때까지 쓰레기값을 출력한다.>
그래서 char arr[4] ="TEST"; 
          char arr[5] ="TEST"; 로 바꿔야함

*배열의 크기를 잡지않고 arr[]을 쓰면 자동으로 크기가 할당됨.


'C > 난정말C Programming을 공부한적이없다고요' 카테고리의 다른 글

다차원 배열(이차원배열)  (0) 2011.08.16
배열 and 포인터  (0) 2011.08.16
포인터  (0) 2011.08.16
변수의 공간할당  (0) 2011.08.16
배열(숫자)  (0) 2011.08.16
DataType 배열이름[크기];

#include<stdio.h>
{ int arr[5] = {1.2,3,4,5}
   printf("arr = %d \n",arr[4]);
}

*선언시

 변수 arr[0]   arr[1]  arr[2]  arr[3] arr[4] 
 값  2  3  4  5

※특징
1. 배열은 [0] 부터 시작
2. 배열크기는 선언할때 메모리상 공간을 할당받기 때문에 프로그램도중에 크기를 변경할수 없다.
3. 배열의 이름은 배열의 첫번째 주소를 가지고 있다 (포인터상수)

#include <stdio.h>
void main()
{
   int  i = 0, sum = 0, english[10] = {};

   for(i=0; i<10; i++)
  {
     printf("%d번의 영어 점수를 입력하세요:",i+1");
     scanf("%d",&english[i]);
  }
printf("\n");

for(i=0; i<10; i++)
  sum += english[i];

printf("10명의 영어점수 총합은 %d",sum);
}

'C > 난정말C Programming을 공부한적이없다고요' 카테고리의 다른 글

다차원 배열(이차원배열)  (0) 2011.08.16
배열 and 포인터  (0) 2011.08.16
포인터  (0) 2011.08.16
변수의 공간할당  (0) 2011.08.16
배열(문자)  (0) 2011.08.16