동적으로 할당 된 구조체 배열이 있습니다. 이 배열에 대한 포인터는 다른 함수로 전달됩니다.배열의 -1 요소에 대한 액세스
struct body{
char* name;
double mass;
// ... some more stuff
};
body *bodies = malloc(Number_of_bodies*sizeof(body));
는 I 배열의 크기를 알아야하므로 I는 배열 (제 구조체)의 0 번째 요소 인 구조체 중 하나의 크기를 저장하고있다.
bodies[0].mass = (double)Number_of_bodies;
그때 내가 다른 함수에서이 포인터를 사용하면 이제, 데이터가 0 번째 요소에서 시작한다 bodies[1]
return (bodies+1);
즉 배열의 첫 번째 요소에 함수에서 포인터를 반환 .
body *new_bodies = (bodies+1); //Just trying to show what happens effectively when i pass to another function
new_bodies[0] = *(bodies+1); //I Think
내가 bodies[0]
에 있었던 초기 구조체를보고 싶다면
new_bodies[-1]
에 액세스 할 수있는 다른 기능에 의미 하는가?
내가 할 수있는 일인가요? 어떻게 초기 구조체에 액세스 할 수 있습니까?
예. 확실한. 왜 안돼? 'a [b]'는'* (a + b)'로 정의됩니다. – Deduplicator
[C의 음수 배열 인덱스]와 밀접하게 관련됨 (http://stackoverflow.com/q/3473675/1708801) –