일부 c 함수를 포트란으로 변환합니다. 내 C 루틴에서, 거기에 내가 다음과 같이 FORTRAN 두 유형 정의 위의 변환 복잡한 c 함수를 포트란으로 변환
typedef struct heapnode {
double c;
int n;
} heapnode;
typedef struct heap {
int n;
int sz;
heapnode *d;
} heap;
아래와 같은 두 가지 구조를 정의하고 그것을 잘 작동합니다.
type heapnode
real*8 :: c
integer*4 :: n
endtype heapnode
type heap
integer*4 :: n
integer*4 :: sz
type(heapnode), pointer :: d
endtype heap
제 질문은 위 두 구조의 시작에 대한 것입니다. 요구 사항은 여기에 하나의 힙 유형 변수가 있어야하며 힙 유형 변수에는 여러 힙 노드가 있어야합니다.
가변 힙 타입이 I 상기 부호 H에서int i;
FILE *f = stdout;
fprintf(f, "Printing heap\n");
for (i=0; i<h->n; i++) {
fprintf(f, "[%4d]: n = %5d, c = %17.12lg\n", i, h->d[i].n, h->d[i].c);
}
힙 소자를 인쇄 C 코드 아래 표시이 시연 H-> N
여기서 더미 변수 H 힙 노드의 수는 우리는 D> H-로서 힙 노드 변수 액세스 볼 수있다 [I]
제가
void *vspace, *oldvspace;
heap *h /* heap */
heapnode *d; /* heap node */
h->n = 0;
h->sz = 8;
oldvspace = (void *) h;
vspace = (void *)(h + 1);/* address of next node */
d = (heapnode *)vspace;/*point heapnode to above address */
h->d = d;/*assign heapnode to new node */
012 이하이 힙 변수 노드를 생성하는 C 코드 표시
우리가 위에서 볼 수있는 것은 특정 메모리 위치에 변수 (이번에는 힙 노드)를 만들고 그 포인터 변수를 가리키는 것입니다.
내가 알고 싶은 것은, 우리가 어떻게 fortran을 사용하여 이것을 할 수 있는지. 이 일을 할 수있는 힌트를 좀주세요.
제목은 일부 기능에 대한 것입니다. 어디 있니? 더 나은 제목에 대해 생각해보십시오. –
또한 어떻게해야 할지를 알지도 모르는 사람들이 C를 모른다는 사실에 대해 생각해보십시오. 배열을 만들고 포인터를 피해야한다고 생각합니다. –