【发布时间】:2015-06-13 07:03:19
【问题描述】:
在我的理解中,数组名不是变量, 那么我们怎么可能像这样取消引用它:
int a[] = {1,2,3,4,5};
void *p = &a;
这是什么意思? 为什么我们所有的 MPI 函数都需要这种解引用?
int buff[2];
...
MPI_Bcast(&buff, 2, MPI_INT, PROC, MPI_COMM_WORLD);
来自 Kernighan & Ritchie:
数组名和指针之间有一个区别 请牢记。指针是一个变量,所以 pa=a 和 pa++ 是合法的。 但是数组名不是变量;像 a=pa 和 a++ 这样的结构 是非法的。
【问题讨论】:
-
“数组名不是变量”是什么意思?在对
MPI_Bcast的调用中,buff的类型是什么? -
数组名是指向其第一个元素的指针。所以,
a==&a[0] -
是的,很酷的家伙,我知道,但这不是一个变量。
-
是指针类型的变量。