c - * C 指针中的符号

标签 c pointers syntax

在这里,我提供了一个使用指针的简单代码。

void rets(int *px, int *py)
{
    *px = 3;
    *py = 5;
}
int main()
{
    int x, y;

    rets(&x, &y);
    printf("First is %d, second is %d", x, y);
}

我只是希望它被清除...在声明中:int *px, *py;,留出两个字节来存储整数变量的地址并给出这个存储空格名称px。它还留出另外两个字节来存储另一个整数变量的地址,并给这个空间命名为 py。星号告诉编译器这些变量将包含地址(如果我没记错的话? ),并且 int 告诉它地址将指向整数变量。但是——这就是很多困惑的根源:

*px = 3;
*py = 5;

这里的使用方式与指针声明中的使用方式略有不同。什么意思?

最佳答案

因此,在函数声明中,您声明了指向 int 的指针,该指针将作为参数传递。在定义中,您取消引用指针,因此实际上使用了 main 中声明的变量空间。如果您没有取消引用,那么您只会更改指针而不是指向的内容。在调用 rets() 的地方,您使用 & 给出了 main 中定义的变量的地址。

关于c - * C 指针中的符号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6148929/

相关文章:

pointers - 从函数中的局部变量返回指针

delphi - 我可以在 Delphi/Pascal 中一次性分配数组中的项目吗?

c++ - 调试 C 程序的断言错误

c - 为什么我的 C 代码不能使用指针和结构体工作?

c - 从源文件中删除关键字替换注释?

c++ - 从基类指针访问派生类成员

arrays - Kotlin 中简洁的 2D 原始数组初始化

Java Lombok : Omitting one field in @AllArgsConstructor?

c - 接收到的网络数据包中的内存对齐问题

c - 覆盖 C 数组中的空字符