关于并行计算中MPI_send的问题

MPI_send中第一个参数msg_buf_p什么时候取&符号用,什么时候不用,比如&s和s

http://tieba.baidu.com/p/3214731415

initial address of send buffer
以上是第一个参数的说明,翻译过来就是: 发送缓冲区的初始地址

当发送整型、字符型变量的值时,需要用取地址运算符&
当发送比如字符串变量,因为变量本身就是地址值,所以不再需要取地址运算符&

举个例子:

string log = "TEST";
int length = log.length();

char* temp = (char *) malloc(length+1);
strcpy(temp, log.c_str());

MPI_Send (&length, 1, MPI_INT, 0, 1, MPI_COMM_WORLD); //注意和下一句的不同
MPI_Send (temp, length+1, MPI_CHAR, 0, 1, MPI_COMM_WORLD);