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,我在手机上。
答案 0 :(得分:1)
计算表达式a[1] = b
,然后将结果作为参数传递。结果既不是a[1]
也不是b
,但它等于两者。
你可以这样认为
char *compiler_generated_temp_variable = a[1] = b;
strcpy(compiler_generated_temp_variable, c);
答案 1 :(得分:1)
根据C ++标准
5.17分配和复合赋值运算符
1赋值运算符(=)和复合赋值运算符 所有组从右到左。所有都需要左侧可修改的左值 操作数和返回引用左操作数的左值。
因此这句话
strcpy(a[1] = b, c);
等同于逗号运算符
的语句a[1] = b, strcpy( a[1], c);
所以问题的答案
是否会将[1]发送给该函数?
将是你是对的(我的祝贺:))。 a [1]在赋值给b之后被发送到函数。