通过引用和值传递int的好处?

Jan*_*son 3 c

  1. 通过引用而不是按值传递ints是否有性能优势?我这样说是因为如果你通过引用传递你正在创建一个4字节的指针,但是如果你通过值传递,你仍然会创建一个4字节的值副本.所以他们都占用了额外的4个字节,对吧?
  2. 是否可以使用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)

Fre*_*Foo 9

传递指针(在C中没有引用)的好处是函数可以更新原始函数int,即返回其中的值.没有性能优势; 而且,传递指针可能会降低程序的速度,因为指向的程序int必须位于可寻址的内存中,因此它不能在寄存器中.

请注意,&(int *)5这不符合您的想法.(int *)5将值5转换为指针,将其解释为内存地址.&除了获取临时地址是非法的之外,它会给出指针的地址.你可能意味着

int i = 5;
func1(&i);
Run Code Online (Sandbox Code Playgroud)

  • @Jane:取决于架构.在大多数32位机器上,int是32位,因此是指针.在许多64位机器/编译器组合中,int是32位,但指针是64位.因此传递指针需要8个字节,但传递一个int只需要4个字节. (3认同)