实际参数列表中的赋值运算符

assignment operator in actual parameter list

int main ()
{
char* a[5] = {0}
char* b = //char type address here.;
char c[] = "copy";
strcpy(a[1] = b, c);
}

strcpy(a[1] = b如何评估? a[1] 是否发送到函数?

我无法测试这个 atm,我在 phone。

表达式 a[1] = b 被求值,然后 结果 作为参数传递。结果既不是 a[1] 也不是 b,但两者都相等。

你可以这样想

char *compiler_generated_temp_variable = a[1] = b;
strcpy(compiler_generated_temp_variable, c);

根据 C++ 标准

5.17 Assignment and compound assignment operators

1 The assignment operator (=) and the compound assignment operators all group right-to-left. All require a modifiable lvalue as their left operand and return an lvalue referring to the left operand.

因此这个声明

strcpy(a[1] = b, c);

等同于带逗号运算符的语句

a[1] = b, strcpy( a[1], c);

所以你问题的答案

Does a[1]get sent to the function?

将是你是对的(我的祝贺:))。 a[1] 在将 b 赋值给它之后被发送到函数。