gpt4 book ai didi

c - 为什么我得到不同的值 "a"。为了获得相同的值需要做什么?

转载 作者:行者123 更新时间:2023-11-30 20:49:26 26 4
gpt4 key购买 nike

#include<stdio.h>
void func(int x[]);
main()
{
int a[]={1,2,3,4};
printf("size of %d \n",sizeof(a)); // Some value I'm getting
func(a);
}
void func(int a[])
{
printf("size of %d",sizeof(a)); // Value is changing
}

两次,“a”的值打印不一样。为了通过维护此代码获得相同的值,还需要添加哪些代码或需要进行任何更改?

我不想更改任何函数的签名。在不改变签名的情况下,func(int a[])里面需要添加什么额外的代码?.

最佳答案

数组函数参数衰减为指针,这意味着 func 的参数是 int* 类型。因此,您只能在 func 内计算 sizeof(int*)

如果您想传递数组大小,可以将其作为单独的参数传递

func(a, sizeof(a)/sizeof(a[0]));
....
void func(int* a, int num_elems);

或初始化a以包含标记数组结尾的哨兵值并迭代元素,直到在func中找到该值。

关于c - 为什么我得到不同的值 "a"。为了获得相同的值需要做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16117816/

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