포인터 및 구조체에 대해 아직 배우고 있지만 포인터를 사용하여 개별 멤버에 순차적으로 액세스 할 수 있는지 알고 싶어합니다.포인터가 멤버에 순차적으로 액세스하는 배열 구조체
Typedef record_data {
float a;
float b;
float c;
}records,*Sptr;
records lists[5];
Sptr ptr;
예 : 아래의 예에서 내 오류를 용서 플로트 1.0
// instead of this
(void)testworks(void){
int i;
float j=1.0;
ptr = &lists[i]
ptr->lists[0].a = j;
ptr->lists[0].b = j;
ptr->lists[0].c = j;
ptr->lists[1].a = j;
// ... and so on
ptr->lists[4].c = j;
}
// want to do this
(void)testwannado(void){
int a,i;
float j=1.0;
ptr = &lists[i]
for (a=0;a<5;a++){ // step through typedef structs
for (i=0;i<3;i++){ // step through members
???
}
}
의 값으로 5 개 목록의 모든 구성원을 할당하지만, 내가 원하는에 대해 생각할 수있는 가장 가까운 대상을 나타냅니다 I 달성하려고합니다.
int *mptr;
mptr = &(ptr->lists[0].a) // want to assign a pointer to members so all 3 members can be used...
*mptr++ = j; // so I can do something like this.
이것은 컴파일되지 않았으므로 다른 오류는 의도하지 않았습니다.
올바른 'float * mptr;'은 사용자의 실수입니다. int로 정의했음을 의미합니다. –
예, 원래이 예제를 작성했을 때 단순화를 위해 멤버를 int로 만들었지 만 float의 길이가 sequenctial stepping을 처리 할 때 중요성을 가질 수 있다고 생각하여 마지막 순간에 변경했습니다. – user1879874
유용하거나 효과가 있습니까? 현재 상태는 무엇입니까? –