gpt4 book ai didi

c - 数组的值和地址是相同的,除非传递给函数?

转载 作者:行者123 更新时间:2023-12-02 05:29:50 24 4
gpt4 key购买 nike

void pass_arr(int arr[]);

void pass_arr_test()
{
int arr[5] = {1,2,3,4,5};

printf( "arr = %p\n"
"&arr = %p\n\n", arr, &arr);

pass_arr(arr);
}

void pass_arr(int arr[])
{
printf( "passed arr = %p\n"
"passed &arr = %p\n\n", arr, &arr);
}

输出:
arr = 0x28ccd0
&arr = 0x28ccd0

通过 arr = 0x28ccd0
通过 &arr = 0x28ccc0


有人可以解释为什么在创建 arr 的 block 中评估时 arr 的值和地址指向相同的地址,但在传递值和地址时指向两个不同的地址吗?

最佳答案

那是因为在函数中arr其实是一个指针,而不是数组。获取指针的地址不会产生与数组相同的地址。

关于c - 数组的值和地址是相同的,除非传递给函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12543225/

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