我是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;
}
答案 0 :(得分:1)
你应该写
int *p= numbers;//a pointer that points to the first element of number
sort(p, i); //function
传递给函数的数组被隐式转换为指向其第一个元素的指针。
该功能也应该是
//function sorts in ascending order
int sort (int *p, int n) //function definition
{
for ( int i = 0; i < n; i++) //loop through entire array
{
printf("%d\n", *p++);
// or
//printf("%d\n", p[i]);
}
return 0;
}
答案 1 :(得分:0)
指针是一个包含内存中地址的变量 另一个变量。 &符号
(&)
运算符表示地址 存储器中。
int *p= &numbers;
此行将保存数组的第一个地址 元件。要打印数组的每个元素,您必须递增 指针printf("%d\n", *p++);
以及当您调用函数时 不需要声明它的参数数据类型。在这一行sort(int *p, int i);
中,这是一种调用函数的错误方法。直接调用它们,就像这样:sort(p,i);
在你的情况下。
#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 address of the first element of numbers array
sort(p, 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;
}
此排序功能只是打印值。如果您想要完整的代码Go here