gpt4 book ai didi

c - 可以在函数内部运行一个 c 数组,只用一个指针作为参数吗?

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

我正在玩和学习一些 C,创建了一个数组并将它连同它的大小一起传递给一个函数,这样我就可以遍历数组并打印它的所有元素(所以我给了函数两个参数:数组本身及其大小)。

但现在我喜欢通过将一个参数传递给函数来完成所有这些工作。我通过使用指针让它工作了一点,但我不知道如何停止,因为我没有关于数组长度的任何信息,它只在下面的代码中有效,因为我将数组长度放在 for 循环中。但是,如果我不知道大小并且只将一个参数传递给函数,那么一般情况下这将如何工作?

我认为如果指针指向我当前正在使用的数组之外,我认为它可能以某种方式实现,但这是否可行? :S

void printArray(int *p){
for(int i=0; i<4; i++){
printf("%d ", *(p+i));
}
}

int main(){
int myArray[4] = {8,4,1,1};
int *p = myArray;
printArray(p);
return 0;
}

最佳答案

在没有长度参数的情况下遍历指向数组的唯一方法是数组包含不同的终止符值。

例如,C 字符串是 char 值的“NULL 终止”数组。你可以遍历一个 char* 因为你知道测试是否存在 '\0' 字符,它的整数值为 0。

因为它适用于您问题中的代码,您可以使用 -1 作为终止符值,如下所示:

void printArray(int *p){
while (*p != -1{
printf("%d ", *p++);
}
}

但是请注意,这样做需要有一些方法可以将有效的 int 值解释为对于您的目的“无效”。

总的来说,将数组的长度传递给函数要简单得多。

关于c - 可以在函数内部运行一个 c 数组,只用一个指针作为参数吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55677594/

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