c - C 中 mymethod(i) 和 mymethod(&i) 有什么区别?

标签 c pointers address-operator

我想知道调用如下方法有什么区别:

int x;
mymethod(x); 

mymethod(&x);

最佳答案

因为 C 总是按值调用,如果您希望函数能够更改函数本身内部的 x,则必须传递 x 的地址。

mymethod(x);

将传递 x,例如,如果 x 是 2,您也可以编写 mymethod(2)

mymethod(&x)

将把地址传递给 x。现在该方法可以更改存储在该地址的值,因此函数完成后,x 的实际值可能已更改。

现在您还可以声明一个指针:

int* y; //y is now a pointer to a memory address
y = &x; //y now points to the memory address of x;
*y = 5; will set the "value found at the address y" to 5, thus will set x to 5;

关于c - C 中 mymethod(i) 和 mymethod(&i) 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5210241/

相关文章:

c - Linux C - 将 `iphdr->daddr` 转换为等效字符串 - 不再起作用了吗?

c - 如何导出变量 [在 Makefile,shell 脚本,...] 中被视为在 C 中定义(作为宏)?

c++ - 空指针之间的比较,它是定义的还是依赖于编译器的?

c# - C# 中的 AddressOf 替代方案

C 指向数组的指针;到原始

c++ - 为什么指针在 C++ 中表现得像这样

c - 使用 YAJL 在 C 中解析复杂的 JSON 子对象

c++ - 管理 MP3 的播放速度和位置

java - 在 Java 中不使用 .size() 的环形缓冲区的lush() 和 isEmpty() 方法

c++ - 指向作为类成员的函数 - GLFW setKeycallback