是否可以使用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)传递指针(在C中没有引用)的好处是函数可以更新原始函数int,即返回其中的值.没有性能优势; 而且,传递指针可能会降低程序的速度,因为指向的程序int必须位于可寻址的内存中,因此它不能在寄存器中.
请注意,&(int *)5这不符合您的想法.(int *)5将值5转换为指针,将其解释为内存地址.&除了获取临时地址是非法的之外,它会给出指针的地址.你可能意味着
int i = 5;
func1(&i);
Run Code Online (Sandbox Code Playgroud)