Pointer

2009. 8. 5. 22:54HW & SW


1. printf("%#010x\r\n", imsip);
#: 주소표현시 0x를 나타낸다.



2. 포인터의 일반적 사용
#include <stdio.h>

main(0
{
   int imsi = 5;
   int *imsip;

  imsip = &imsi;   //없을 경우 임의의 장소에 초기화되어 segmentation fault 발생
  *imsip = imsi;
  printf("imsip[%#010x]   *imsip[%d]\r\n", imsip, *imsip);
}

실행
imsip[0x8047d24] *imsip[5]



3. 배열 초기화

int imsi[2][3] = {0};     //0으로 모두 초기화

int imsi[2][3] ={{1,2,8},{34,634,7}};



4. 배열명의 숨은 뜻

main()
{
int imsi[3] = {5,3,7};
int *imsip;

imsip = imsi;

printf("%d\n", *imsip);                                              //5
printf("%d %d %d\n", *imsip,*(imsip+1),*(imsip+2));    //5,3,7
printf("%d\n", *imsi);                                                //5
printf("%d %d %d\n", *imsip,*(imsip+1),*(imsip+2));    //5,3,7
}



5. 캐스트 연산자
int pointer=5;
(int*)pointer;  //5의 값을 주소



6. 함수인자 포인터
main()
{
void add(int*,int);
int imsi[3] = {7,4,5};
int *imsip;
int i;
int length;

imsip = imsi;
length = sizeof(imsi)/ sizeof(int);

add(imsip, length);
add(imsi,length);
}

void add(int *imsip, int length)
{
int i;
for(i=0;i<length;i++,imsip++)
     *imsip +=10;
}



7. 함수인자 구조체 포인터
#include <stdio.h>

struct imsi{
   int x;
   int y;
};

main()
{
   void swap_struct(struct imsi*);
   struct imsi one;

   one.x=10;
   one.y=1024;

   swap_struct(&one);
}

void swap_struct(struct imsi*temp)
{
   int sample;
  
   sample = temp->x;
   temp->x = temp->y;
   temp->y = sample;
}



8. malloc, calloc

char *imsip;
struct grades *grade;

imsip = (char*)calloc(10,sizeof(char0);
grade = (struct grades*) calloc(10,sizeof(struct grades));

calloc:  NULL로 초기화, 시간 걸림
 
 

'HW & SW' 카테고리의 다른 글

쓰레드 생성과 종료  (0) 2010.01.18
다이얼로그 베이스 색상 변경  (0) 2010.01.18
PSPICE  (0) 2008.10.05
3차원 배열 동적할당  (0) 2007.11.12
색연필 - 저항계산  (0) 2007.10.17