簡體   English   中英

將數組作為參數傳遞給C中的函數指針

[英]Passing an array as an argument to a function pointer in C

我目前正在研究指向函數的指針,並一直在研究排序數組函數。 關鍵是我在函數中輸入了一個數字序列,程序將按升序重新排列。 當我按值調用函數時,它工作得很好(我認為這就是您的調用方式)。 但是,當我嘗試為函數分配一個指針並嘗試使用該指針而不是函數本身時,它將返回一堆錯誤。 我確定問題是由於我將數組作為參數傳遞給了POINTER函數。 這是我的代碼:

#include<stdio.h>
#define SIZE 10

void sort(int a[], int size);
void swap(int *elt1, int *elt2);
main()
{
    int i; int array[SIZE]= {1,9,3,2,4,100,43,23,32,12};
    void (*fptr)(int array, int SIZE);
    fptr = &sort;
    (*fptr)(array,SIZE);
    /*sort(array, SIZE);*/
    for(i=0;i<SIZE;i++)
    {
            printf("%d\n", array[i]);
    }
    return 0;
}

void sort(int a[], int size)
{
    int pass, j;
    for(pass = 0; pass<size;pass++)
    {
            for(j=0;j<size;j++)
            {
                    if(a[j]>a[j+1])
                    {
                            swap(&a[j], &a[j+1]);
                    }
            }

    }


}


void swap(int *elt1, int *elt2)
{
    int hold;
    hold = *elt1;
    *elt1 = *elt2;
    *elt2 = hold;

}

該函數的第一個參數是指向int的指針(即int * ),而不是int

void (*fptr)(int array, int SIZE);

應該

void (*fptr)(int *array, int SIZE);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM