我正在使用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字符串是“以NULL终止”的char
值数组。您可以遍历a,char*
因为您知道要测试'\0'
字符的存在,该字符的整数值为0。
由于它适用于您问题中的代码,因此可以使用-1作为终止符值,如下所示:
void printArray(int *p){
while (*p != -1{
printf("%d ", *p++);
}
}
但是请注意,这样做需要某种方式将有效值解释int
为“无效”。
从根本上讲,只需将数组的长度传递给函数就容易得多。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句