구조체의 멤버에 대한 포인터를 만들 수있는 방법은 int 배열입니다. 이 구조체는 다음과 같습니다.구조체 배열에 대한 포인터
typedef struct {
volatile int x[COORD_MAX];
volatile int y[COORD_MAX];
volatile int z[COORD_MAX];
//... other variables
} coords;
coords abc;
abc
은 전역 변수입니다. 이제 x, y 및 z 배열에 대한 포인터를 가져 와서 다른 배열에 저장하고 싶습니다. 그런 다음 원하는 색인을 전달하여 액세스합니다. 여기에 내가 무슨 뜻입니다 :
void test(int index1, int index2)
{
static volatile const int* coords_ptr[3] = {abc.x, abc.y, abc.z};
coords_ptr[index1][index2] = 100;
}
그래서
index1
은 (x, y, z)를 선택할 수있는 좌표의 유형을 선택합니다.
index2
은 변경할 좌표의 색인을 선택합니다.
이것은 작업중인 코드를 단순화 한 것입니다. 그러나 원리는 같습니다.
미리 감사드립니다.
편집 :
내가 잘못 코드를 작성했습니다. 혼란스럽게해서 죄송합니다.
죄송합니다, 내 말은'coords' 객체가 함수에 작동하는 것을 test''에서 C. – user1806687
에서? 'coords'는 유형이 아니라 객체입니다. – nneonneo
@nneonneo 컴파일러는 x, y, z가 휘발성이기 때문에 행복하지 않았습니다. 그래서 거기에 추가해야했습니다. 잘못 됐나? – user1806687