是否可以使用cast:(int*)通过引用传递int文字?或者你必须将指针传递给int?请参阅以下示例代码:
int func1(int *a){
(*a)++; // edited from comment by Joachim Pileborg
printf("%i\n", *a);
return 0;
}
int func2(int a){
a++;
printf("%i\n", a);
return 0;
}
int main(void){
func1(&(int *)5); // an int literal passed by reference using a cast ?
func2(5);
return 0;
}
Run Code Online (Sandbox Code Playgroud)有很多文章讨论价值语义与参考语义,也许更多的文章试图解释移动语义.但是,没有人谈论过值语义和移动语义之间的联系.它们是正交概念吗?
注意:这个问题不是关于比较值语义和移动语义,因为很明显这两个概念不是"可比的".这个问题是关于他们是如何联系的,特别是(如@StoryTeller所说),讨论(如何):
移动语义有助于更多地使用值类型.