2016-07-12 2 views
0

배열의 크기를 할당 가능하게 만들 수 있습니까? (차원의 단지 크기)배열의 동적 크기

즉, 뭔가 제공 :

REAL, DIMENSION(:,:,: ... n), ALLOCATABLE :: array 

내가 배열 감각의 배열이 의미하지만, 우리가 포트란의 쉽게 접근 할 배열 구조를 보존 할 수 있습니까? this이 있었지만 첫 번째 대답은이 필요를 충족시키지 못합니다. 두 번째 대답은 포인터를 사용합니다. 그게 효과가 있니?

+2

유사한 질문은 [this one] (https://stackoverflow.com/q/31974786)입니다. – francescalus

+0

또는이 하나 : http://stackoverflow.com/q/7500920/2737715 –

+1

이것은 FAQ의 일부입니다. 그러나 덜 빈번한 것은이 시설을 필요로하는 강력한 이유입니다. 무엇 당신이야 ? –

답변

2

아니요, 가변 랭크의 배열을 가질 수 없습니다. Fortran 2008 표준, Cl. 2.4.6 "배열":

1 배열은 최대 15 개의 차원과 임의의 차원을 가질 수 있습니다. 배열의 크기는 합계가 이고 요소 수와 같으며 범위의 곱과 같습니다. 배열의 크기는 0 일 수 있습니다. 배열의 모양은 각 차원에서 순위와 범위에 의해 결정되며 요소가 범위 인 순위 1 배열로 표시됩니다. 명명 된 배열은 모두 선언되어야하며 명명 된 배열의 순위는 선언에 지정됩니다. 한 번 선언 된 명명 된 배열의 순위는 일정합니다. 익스텐트는 일정하거나 실행 중일 때 일 수 있습니다.

[강조 광산. 그러나

에는 일차원 정도 product(extent in each dimension)으로 배열 인덱스 적절 요소를 가질 수있다.

이러한 1D 배열과 연관된 다차원 포인터가있을 수도 있습니다. 이것은 색인 생성을 처리 할 것이지만 (인용문에서 주어진 바와 같이) 표준 포트란의 경우 15 개로 제한됩니다.