#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/

10-11 21:46