我希望在c中编写一个打印数组函数。当你通过引用将一个数组传递给一个c函数时,我将一个指针传递给第一个元素。我假设我可以增加这个指针迭代数组但是我的程序只是段错误。
我首先想知道为什么我的程序是seg faulting,以及在c中编写这样一个函数的最惯用的方法。谢谢你。
void print_array(int *array, int length) {
int i = 0;
for (i = 0; i < length; array++) {
printf("%d\n", *array);
}
}
int main (int argc, int *argv[]) {
int test[10] = {0};
print_array(test, 10);
}
答案 0 :(得分:4)
你的循环是无限的,因为i
中的i < length
永远不会改变;这种情况总是评估为真。结果,你跳过了循环的结束。我建议将你的循环改为:
for (i = 0; i < length; i++) {
printf("%d\n", array[i]);
}
...或者,如果您想使用array++
,请更改条件:
for (int *end = array + length; array < end; array++) {
printf("%d\n", *array);
}
答案 1 :(得分:0)
试试这个:
void print_array(int *array, int length) {
int i = 0;
for (i = 0; i < length; i++) {
printf("%d\n", array[i]);
}
}
由于i
是你的循环控制变量(它处于循环条件中),你需要递增它以避免无限循环。使用[]
表示法对于某个级别的人来说比手动增加指针要容易得多。