C프로그래밍 포인터 이해2 자율주행자동차 센서에서 장애물까지의 거리
포인터도 배열 이름처럼 간주될 수 있고 배열과 똑같이 사용할 수 있다.
#include<stdio.h>
int main(void)
{
int a[] = { 10, 20, 30, 40, 50 };
int* p;
p = a;
printf("a[0]=%d a[1]=%d a[2]=%d \n", a[0], a[0], a[0]);
printf("p[0]=%d p[1]=%d p[2]=%d \n", p[0], p[1], p[2]);
p[0] = 60;
p[1] = 70;
p[2] = 80;
//포인터를 마치 배열의 이름처럼 사용하여 배열 요소에 값을 대입한다. p와 a는 똑같은 곳을 가리키고 있기 때문에 p를 사용하든지 a를 사용하든지 결과는 똑같다.
printf("a[0]=%d a[1]=%d a[2]=%d", a[0], a[1], a[2]);
printf("p[0]=%d p[1]=%d p[2]=%d", p[0], p[1], p[2]);
return 0;
}
자율 주행 자동차
자율 주행 자동차에 3개의 센서(왼쪽, 중간, 오른쪽 센서)가 있고 이들 3개의 센서에서 장애물까지의 거리를 getSensorData() 함수를 통하여 받는다고 가정하자
즉 getSensorData() 함수는 매개 변수를 통하여 3개의 double형 데이터를 반환하여야 한다. getSensordata()를 작성해보자.
#include<stdio.h>
//0부터 00까지의 난수(실수형태)를 발생하여 크기가 3인 배열 p에 저장한다.
void getSensorData(double* p)
{
p[0] = rand() % 100;
p[1] = rand() % 100;
p[2] = rand() % 100;
return;
}
int main(void)
{
double sensorData[3];
getSensorData(sensorData);
printf("왼쪽 센서와 장애물과의 거리: %lf \n", sensorData[0]);
printf("중간 센서와 장애물과의 거리: %lf \n", sensorData[1]);
printf("오른쪽 센서와 장애물과의 거리: %lf \n", sensorData[2]);
return 0;
}