我想知道为什么我得到这个错误?D:C ProgrammingC training projectsbubblePointermain.c|6|error:预期在数字常量之前有';',','或')'。我需要知道为什么。然而,代码在"C如何编程";传递数组的大小也
#include <stdio.h>
#include <stdlib.h>
#define size 10
//prototype
void bubble(unsigned int a[],const size_t size);
void swap(unsigned int *ptr1,unsigned int *ptr2);
int main()
{
unsigned int response[size] =
{6, 7, 8, 9, 8, 7, 8, 9, 8, 9};
bubble(response,size);
return 0;
}
void bubble(unsigned int a[],const size_t size)
{
int pass;
for(pass=0;pass<size-1;pass++)
{
int j;
for(j=0;j<size-1;j++)
{
// swap adjacent elements if they’re out of order
if(a[j]>a[j+1])
{
swap(&a[j],&a[j+1]);
}
}
}
// output sorted array
size_t i;
for ( i = 0; i < size; ++i)
{
printf("%4d", a[i]);
}
}
void swap(unsigned int *ptr1,unsigned int *ptr2)
{
unsigned int hold;
hold=*ptr1;
*ptr1=*ptr2;
*ptr2=hold;
}
您的#define size 10
指示预处理器用10
替换令牌size
的所有实例。因此,函数的声明(和定义):
void bubble(unsigned int a[],const size_t size);
将被转换为:
void bubble(unsigned int a[],const size_t 10);
在实际的编译过程开始工作之前。
你能看出第二个定义有什么问题吗?当然,不能使用10
作为参数名。
你需要做的是:或者重命名该参数(例如,size_arg
)或(取决于你首先定义size
宏的原因)从函数中删除该参数,只在函数代码中使用该预定义。