gpt4 book ai didi

c - 当我运行这段代码时,输​​出是 1,2,3,0 但我不明白为什么?

转载 作者:行者123 更新时间:2023-11-30 21:17:51 24 4
gpt4 key购买 nike

#include <stdio.h>

void fun(int, int[]);

int main()
{
int arr[] = {1,2,3,4};
int i;
fun(sizeof(arr)/sizeof(int)-1,arr);
int x = (sizeof(arr)/sizeof(int)-1);
for (i=0;i<4;i++)
{
printf("%d,", arr[i]);
}
return 0;
}
void fun(int n, int arr[])
{
int *p = 0;
int i = 0;
while (i++ < n)
p = &arr[i];
*p = 0;
}

最佳答案

  1. sizeof(arr)/sizeof(int)返回 arr 中的元素数量,在本例中为 4。
  2. n3 ( 4-1 ) 在这里,所以 i++ < n如果 i 则为真在评估此表达式之前是 2或更少,如果是3则为假或更多。
  3. 如果 i 的值是2评估之前i++ < n , i成为3计算此表达式后。
  4. 然后是arr[3]的地址存储到p .
  5. 现在i3 , i++ < n为 false,循环结束。
  6. arr[3]变成0感谢*p = 0;
  7. 作为参数传递的内容 arrfun()arr 第一个元素的地址在main() ,所以它的第四个元素变成了 0 .
  8. 最后,arr 的元素已打印。

关于c - 当我运行这段代码时,输​​出是 1,2,3,0 但我不明白为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34115130/

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