在函数中使用#define

时间:2014-04-30 17:10:15

标签: c function variables

我如何制作它以便我可以在我的函数中使用#define变量?我需要创建一个使用此代码调用函数的程序。基本上我的底部函数可以改变,但我的主要功能不能改变这种格式,所以我写我的函数我必须通过函数传递变量a和变量SIZE。但目前似乎SIZE实际上并未被认为是一个int变量。

#include <stdio.h>

#define SIZE 9

int i, position, tmp;

void readArray(int a[]);
void printArray(int a[]);
void sortArray(int a[]);

int main(void)
{
int a[SIZE];

readArray(a);

printArray(a);

sortArray(a);

printf("After sorting:\n");

printArray(a);

return 0;
}


//Functions//
void readArray(int a[]){
printf("Please enter %d integers: ", SIZE);
    for (i=0; i<SIZE; i++) {
        scanf("%d", &a[i]);
    }
}

void printArray(int a[]){
for (i=0;i<SIZE;i++) {
        printf("a[%d] = %3d\n", i, a[i]);
    }
}

void sortArray(int a[]){
for (i=0; i<SIZE; i++) {
        // In each iteration, the i-th largest number becomes the i-th array  element.
        // Find the largest number in the unsorted portion of the array and
        // swap it with the number in the i-th place.

        for (position=i; position<SIZE; position++) {
            if (a[i] < a[position]) {
                tmp = a[i];
                a[i] = a[position];
                a[position] = tmp;
            }
        }
    }
}

2 个答案:

答案 0 :(得分:3)

写作

 #define SIZE 9

将告诉预处理器用9替换SIZE的每个外观。 意思是,以下一行 -

void sortArray(int a[], int SIZE)

将替换为 -

void sortArray(int a[], int 9)

我认为你明白这是非法的。 您应该删除第二个函数参数。

答案 1 :(得分:0)

您应该将C变量重命名为其他而不是SIZE。这已经被预处理器使用了。另外,请注意,因为您已经写了Int而不是int