2014. 8. 27. 17:32
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.



- 다중 포인터 


int a;

int *pa;

int ** ppa;

int ***pppa;


ex)  x 98 의 주소는 * x 99에 담을 수 있음

      역참조 * x 98 은 * x 98의 값을 가져옴



-----



#include <stdio.h>



int main(){


int a=1;

int *a1=&a;

int *a2=&a;

int *a3=&a;

int **a4=&a2;

int ***a5=&a4;

int ****a6=&a5;

int ****a7=&a5;

int *****a8=&a7;


printf("*****a8 : %d\n",*****a8);


*****a8=2;


printf("*****a8 =2  ->  a : %d\n",a);


return 0;

}



---------



- 배열


선언 : 자료형 배열명[크기]


int nArray[5]={0};   -> int nArray[0]=0;     //0 부터 시작

        int nArray[1]=0;

  int nArray[2]=0;

  int nArray[3]=0;

  int nArray[4]=0;



* stack은 높은 주소에서 낮은 주소로 메모리에 쌓인다


| [0]

[1]

[2]

[3]

[4]



sizeof(nArray);   -> 5


* 선언시, 상수로는 지정가능하지만 변수로는 지정 불가 

  int a=4;

  int nArray[a]={0};  //불가 


하지만 선언이 끝난후에는 변수를 집어넣을 수 있음




-----------



- 배열의 특징


저장공간이 아니다

배열명자체가 배열의 시작주소([0])를 의미 



int main(){


int nArray[5]={0};


nArray[0]=1;

nArray[1]=2;

nArray[2]=3;

nArray[3]=4;

nArray[4]=5;


return 0;

}



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


int i,j;

int num[9]={0};

printf("input Number : ");

scanf("%d", &j);

for(i=0;i<j;i++){

printf("num[%d] : %d \n",i, num[i]=i);

}


printf("\n");

return 0;

}



* 문자열의 끝에는 NULL('\0')이 자동으로 추가 

-> 배열의 크기 : 필요한 문자수 +1 (NULL)



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



int nArray[4]={0,1,2,3};

char cArray[4]={'a','b','c'};

printf("&nArray = 0x%X \n", nArray);

printf("nArray[0] = %d &nArray[0]=0x%X\n",nArray[0],&nArray[0]);

printf("nArray[1] = %d &nArray[1]=0x%X\n",nArray[1],&nArray[1]);

printf("nArray[2] = %d &nArray[2]=0x%X\n",nArray[2],&nArray[2]);

printf("nArray[3] = %d &nArray[3]=0x%X\n",nArray[3],&nArray[3]);



printf("&nArray = 0x%X \n", cArray);

printf("cArray[0] = %d &cArray[0]=0x%X\n",cArray[0],&cArray[0]);

printf("cArray[1] = %d &cArray[1]=0x%X\n",cArray[1],&cArray[1]);

printf("cArray[2] = %d &cArray[2]=0x%X\n",cArray[2],&cArray[2]);

printf("cArray[3] = %d &cArray[3]=0x%X\n",cArray[3],&cArray[3]);    //NULL 의 위치


printf("cArray = %s \n", cArray);


return 0;


}




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


int array[5]={1,2,3,4,5};

int * ptr=array;


int는 4 byte씩 올라 가기 때문에 포인터로 배열 지정시 처음 주소(1000) 후에 다음 숫자를 지정하기 위해서는 4를 더해줘야 함 (1004)







'C / C++' 카테고리의 다른 글

coding based on the basic functions  (0) 2014.09.04
many questions  (0) 2014.08.28
function and pointer  (0) 2014.08.26
making codes  (0) 2014.08.25
functions made by myself  (0) 2014.08.20
Posted by af334