2015-09-24 35 views
-5

我碰到下面的:指針關鍵字/ C++

POINTER(A,B(*)) ;INTEGER B 

什麼是C中上面的代碼/ C++相當於

什麼是;INTEGER B最後?

+2

似乎是一個快速谷歌搜索會給你你需要的所有信息。 – owacoder

+0

對第一件事不能說什麼,它對我來說看起來像是一個不完整的陳述。 ';'只是結束當前的命令,並開始一個新的命令。所以它聲明瞭一個整型變量'B'。 – haraldkl

回答

6

發現根據上述page,Cray指針之間的對應關係C指針可能是這樣的(但請注意,Cray指針與現代Fortran中的標準指針不同)。

Fortran語言:

integer a(3), i 
integer*8 ptr 
pointer(ptr, b(*)); integer b 

a(:) = 10 
print *, "a = ", a(1:3) 

ptr = loc(a(1)) !! now b(i) becomes an alias of a(i) for i=1,2,3 
b(2) = 30 

print *, "b = ", b(1:3) 
print *, "a = ", a(1:3) 

C:

int i, a[ 3 ] = { 10, 10, 10 }; 
int *ptr, *b; 

printf("a = %d %d %d\n", a[0], a[1], a[2]); 

ptr = &(a[0]); // <--> ptr = loc(a(1)) in Fortran 
b = ptr;   // <--> pointer(ptr, b(*)) in Fortran 

b[ 1 ] = 30; 

printf("b = %d %d %d\n", b[0], b[1], b[2]); 
printf("a = %d %d %d\n", a[0], a[1], a[2]); 

編譯

gfortran -fcray-pointer test.f90 
gcc test.c 

a = 10 10 10 
b = 10 30 10 
a = 10 30 10 
3

正如評論正確地說,前半部分是一個(非標準)cray指針結構,在分號後是一個簡單的聲明;這是一個非常奇怪的編程年齡組合!

Cray指針的更多信息可以在

https://www.sharcnet.ca/help/index.php/Using_CRAY_POINTERS_in_a_FORTRAN_90_PROGRAM

+0

什麼是等價物? – Nabin