【发布时间】:2016-04-24 04:38:10
【问题描述】:
我是 C 新手,不知道如何将数组指针传递给函数。该函数应按升序对用户输入的数字进行排序。我想我错过了该功能中至关重要的一些东西。
我能够输入用户值,但这是我所能得到的,没有错误。
#include <stdio.h>
int sort(int *p, int i); //function declaration
int main()
{
int numbers[10]; // ten element array
int i;
printf("Please enter ten integer values:\n");
for(i=0; i<10; i++)
scanf("%d", (&numbers[i]));
int *p= &numbers; //a pointer that points to the first element of number
sort(int *p, int i); //function
}
//function sorts in ascending order
int sort (int *p, int i) //function definition
{
for (i=0; i<10; i++) //loop through entire array
{
printf("%d\n", *p);
}
return 0;
}
【问题讨论】:
-
大家一样的错误,忽略
scanf()的返回值。 -
你写
scanf(const char *"%d", int *&numbers[i]);打电话给scanf吗?不,就像你不写sort(int *p, int i);来打电话给sort一样。 -
@immibis 想说的是,您在第 12 行对函数
sort()的调用是错误的。它不应该重新声明变量的类型,直接使用它们,像这样:sort(p,i); -
还要注意你的 for 循环里面的 sort 只会打印数组的第一个元素 10 次。您应该将打印语句更改为: printf("%d\n", p[i]);
-
@bruceg 明白了,谢谢。
标签: c arrays function pointers