포인터로 이것저것 하는 걸 연습용으로 짜긴 했는데, 혹시 볼 사람 있을까 몰라 올립니다.
#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개 값 다 같음.
}
쓸 데가 있을진 모르겠다..
'공부 : 금융공학, 금융, 통계, 공학, 경제 등' 카테고리의 다른 글
소프트웨어 중심사회의 컴퓨터개론 - 중간고사 대비 Problem set 2. (0) | 2022.01.01 |
---|---|
소프트웨어 중심사회의 컴퓨터개론 - 중간고사[1~7장] Question set. (0) | 2021.12.30 |
C/C++ 전역변수/ 지역변수 설명 및 간단한 예제들. (0) | 2021.12.10 |
동전 던지기, 베르누이 시행, 베르누이 분포, 이항분포 (0) | 2021.12.09 |
여러가지 분포 (0) - 동전 던지기로 정규분포 유도하는 법 (0) | 2021.12.08 |