포인터

​주소를 저장하는 변수입니다.(바이트수:4)

형식: 자료형 *포인터변수명

자료형은 포인터변수와 연결될변수와 같아야합니다.

1
2
3
4
5
6
7
8
#include<stdio.h>
 
int main(void){
    int a = 10;
    int *pa; //포인터변수 선언
    pa = &a; //포인트변수에 변수의주소를 넣어주는
    return 0;
}
cs

위와같이 사용할수 있습니다.

소스코드↓

1
2
3
4
5
6
7
8
9
10
11
12
13
#include<stdio.h>
 
int main(void){
    int a = 0;
    int b = 10;
    int *ptr;
    ptr = &a;
    b = *ptr;
    printf("변수a의주소:%p\n", a);
    printf("ptr의값:%p\n", ptr);
    printf("*ptr의값:%d\n"*ptr);
    printf("b의값:%d\n", b);
}
cs

※%p는 주소를 나타낼때쓰는 서식문자입니다.

결과값은

변수a의주소:0xa의주소

ptr의값:위와같음

*ptr의값:0

b의값:0

이렇게됩니다.

※*ptr과ptr의 다른점

ptr은 a의주소를넣었으니 a의주소를 나타내고

*ptr은 a의주소의값을 의미합니다.


포인터와배열

배열의주소는 자료형의 바이트수씩 차이가납니다.

예로 int a[3];이있고 첫번째주소가 100이라면

 100

 104

108 

위와같이 int(4바이트)이니 4씩차이가납니다.


배열을 포인터로 나타내는법

int a[5];가있다면

a[1] = *(a+1) a[2] = *(a+2) a[3] = *(a+3) a[4] = *(a+4)

배열의이름은 그자체로 주소를 나타내게됩니다. 따라서 a+1의값은 a[1]과같은 값입니다.


배열의주소 출력

1
2
3
4
5
6
7
8
9
#include<stdio.h>
 
int main(void){
    int a[5= {12345};
    int *ptr;
    int i;
    for (i = 0;i<5;i++){
        printf("배열의 값:%d, 배열의 값:%d", a[i], *(a+i));
}
cs

이렇게 쓸수있습니다.

여기서 블로그포스팅을 마치도록 하겠습니다.

포인터 -끝-


'C언어' 카테고리의 다른 글

문자열관련 함수  (0) 2018.01.12
구조체  (0) 2018.01.12
배열  (0) 2018.01.12
함수  (0) 2018.01.12
switch문  (0) 2018.01.12

+ Recent posts