2

我想用c写一个打印数组函数。当您通过引用将数组传递给 ac 函数时,我有群体,它传递了一个指向第一个元素的指针。我假设我可以增加这个指针来迭代数组但是我的程序只是段错误。

我想首先知道为什么我的程序会出现段错误,以及在 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);
}
4

2 回答 2

4

你的循环是无限的,因为iini < 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);
}
于 2013-04-06T03:28:46.830 回答
0

试试这个:

void print_array(int *array, int length) {
    int i = 0; 
    for (i = 0; i < length; i++) {
        printf("%d\n", array[i]);
    }
}

由于i是您的循环控制变量(它处于循环条件中),因此您需要增加它以避免无限循环。[]与尝试手动增加指针相比,使用该符号对于您级别的人来说更容易掌握。

于 2013-04-06T03:28:07.733 回答