본문 바로가기

공부 : 금융공학, 금융, 통계, 공학, 경제 등

[코드모음] C/C++ 포인터 연산 연습용 코드들.

포인터로 이것저것 하는 걸 연습용으로 짜긴 했는데, 혹시 볼 사람 있을까 몰라 올립니다.

#include <stdio.h>

int main()
{
    int a = 1234; //a 선언
    int *ptr = &a; // 주소 a 로하는 (&a) 포인터 ptr 생성
    printf("%d \n",*ptr); // 포인터 ptr가 가리키는 값 출력
    printf("%d \n\n", a); // 이는 a의 값과 일치
    
    printf("%d \n", ptr); // 포인터가 가리키는 주소 (=a의 주소) 출력
    printf("%d \n\n", &a); //이는 a의 주소와 일치함.
    
    int b = 5678;
    ptr = &b ; //포인터 값을 &b(b의 주소)로 바꿈
    printf("%d, %d\n", *ptr, ptr); //포인터가 b의 값, b의 주소 출력
    
    printf("%d \n", &b-&a); //이때 주소 차이는 1.
    
    int c = 9012; //또다른 변수 c 선언.
    printf("%d, %d\n%d \n\n\n", c, &c, &c-&a); //이때도 주소 차이는 1.
    
    
    /*1차원 배열의 경우*/
    int A[10]={0,11,22,33,44,55,66,77,88,99,1010}; //배열 정의
    
    printf("%d\n", A);//array의 이름은 array명[0]을 가리키는 포인터
    printf("%d\n", &A[0]);// A = &A[0] 임을 확인.

    printf("%d,",*A); //A 자체가 하나의 포인터로 작용. 포인터처럼 사용 가능.
    printf("%d\n\n",A[0]); // 따라서 *A=A[0].
    
    
    /*2차원 배열의 경우*/
    int B[1][1]= {{11,12},{21,22}}; //2차원 배열 선언
    printf("%d\n",B[0][0]);
    
    *ptr = B[0][0]; //포인터를 B[0][0]으로 지정
    printf("%d\n", ptr); //포인터만 출력 시 B[0][0]의 주소를 출력
    printf("%d\n\n", *ptr); //*ptr 출력 시 B[0][0]의 값을 출력
    
    *ptr = B;//array 원소의 주소(&array[a][b]) = array의 주소(B)
    printf("%d \n%d \n%d\n\n",*ptr,&B[0][0], B); // 그래서 이거 3개 값 다 같음.
}

쓸 데가 있을진 모르겠다..