#include <stdio.h>
#include <conio.h>
#include <string.h>
void change(int *v[]) {
int tmp;
for (int i = 0; i < 10; i++) {
for (int j = i + 1; j< 10; j++)
if (*v[i] > *v[j]) {
tmp = *v[i];
*v[i] = *v[j];
*v[j] = tmp;
}
}
}
void main() {
int v[10];
for (int i = 0; i < 10; i++) {
printf("Enter the value for v[%d]: \n", i);
scanf("%d", &v[i]);
}
printf("The vector is: \n");
for (int i = 0; i < 10; i++)
printf("Value on the position %d is %d \n", i, v[i]);
change(&v[]); // I think here is the problem
printf("\n\n After function call, the vector is: \n");
for (int i = 0; i < 10; i++)
printf("Value on the position %d is %d \n", i, v[i]);
getch();
}
我需要授权向量,但我不知道如何将向量的值传递给函数。有人可以帮助我解决这个问题并向我解释并让我理解,这很重要。感谢大伙们 !
最佳答案
该函数必须声明为
void change(int v[]) {
^^^^^^
叫像
changes( v );
结果,您必须更改这些语句
if (*v[i] > *v[j]) {
tmp = *v[i];
*v[i] = *v[j];
*v[j] = tmp;
喜欢
if ( v[i] > v[j]) {
tmp = v[i];
v[i] = v[j];
v[j] = tmp;
该功能可以看起来像
void change( int v[] )
{
for ( int i = 0; i < 10; i++ )
{
for ( int j = i + 1; j< 10; j++ )
{
if ( v[i] > v[j] )
{
int tmp = v[i];
v[i] = v[j];
v[j] = tmp;
}
}
}
}
考虑到如果函数可以处理不同大小的数组会更好。在这种情况下,它必须具有第二个参数,该参数将指定数组中的元素数。例如
void change( int v[], size_t n )
{
for ( size_t i = 0; i < n; i++ )
{
for ( size_t j = i + 1; j < n; j++ )
{
if ( v[i] > v[j] )
{
int tmp = v[i];
v[i] = v[j];
v[j] = tmp;
}
}
}
}
函数可以像
change( v, 10 );
关于c - 在C中订购 vector ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40568933/