gpt4 book ai didi

c - function(&x) 中的指针 &x 是什么时候创建的?

转载 作者:行者123 更新时间:2023-12-04 01:00:24 24 4
gpt4 key购买 nike

什么时候创建指向ab 的指针?在下面的代码中,我只声明/启动了ab。但是 swap 函数用 &a&b 来处理它们,它们是指针。

我的问题是,int aint b 是否同时创建了指向 a 和 b 的指针?

或者它们是在使用参数 &a&b 调用 swap 函数时创建的?

#include <stdio.h>

void swap(int *a, int *b)
{
int temp;
temp = *a;
*a = *b;
*b = temp;
}

int main()
{
int a = 3;
int b = 5;
swap(&a, &b);
printf("%d %d", a, b);
}

最佳答案

指向ab 的指针是作为函数调用中参数表达式求值的结果创建的

swap(&a, &b);
^^ ^^

来自 C 标准(6.5.3.2 地址和间接运算符)

3 The unary & operator yields the address of its operand.

因此表达式 &a&b 的类型为 int * 并产生变量 a 的地址和 b

关于c - function(&x) 中的指针 &x 是什么时候创建的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57189642/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com