coding/C언어

C프로그래밍 포인터 이해2 자율주행자동차 센서에서 장애물까지의 거리

codingdoeun 2021. 11. 16. 20:26

포인터도 배열 이름처럼 간주될 수 있고 배열과 똑같이 사용할 수 있다.

 

#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;
}