c - C 错误:int 之前的预期表达式(当我调用该函数时,我得到一个表达式丢失的错误)
问题描述
我收到一些表达式丢失的错误
#include <stdio.h>
void pairmul(int* p,int n,int sum){
int arr[n];
int q;
for(int i =0; i<=n-1; i++){
arr[i] = *(p+i);
}
for(int j = 0;j<=n-1;j++){
for(int k=j+1;k<=n-1;k++){
int temp;
if(arr[j]>arr[k]){
temp = arr[k];
arr[k] = arr[j];
arr[j] = temp;
}
}
}
if(arr[0]+ arr[1]<sum){
q = arr[0]*arr[1];
printf("%d",q);
}
else if(n<2){
printf("-1");
}
else{
printf("0");
}
return 0;
}
int main(){
int sum,n;
int array[n];
printf("Sum and Size of array");
scanf("%d %d \n",&sum,&n);
for(int i =0; i<=n-1; i++){
scanf("%d",&array[i]);
}
pairmul(&array[0], int n,int sum);
return 0;
}
pairmul(&array[0], int n,int sum);
我对这个表达式有错误,即参数很少,第二个是“int”之前有一些表达式
解决方案
你能回忆起函数的语法吗?
func(var1, var2, var3);
正确的?但是在您的代码pairmul(&array[0], int n,int sum);
中,您使用以下语法:
func(var1, datatype var2, datatype var3);
这是没有意义的。改变
pairmul(&array[0], int n,int sum);
进入
pairmul(&array[0], n,sum);
您的代码将正常工作。
我认为您感到困惑的原因是因为可能被宏之类的功能所困惑。例如。
#define MAKE_SQUARE_AND_STORE(datatype, var, num) datatype var = num * num
int main() {
MAKE_SQUARE_AND_STORE(int, square, 3);
printf("%d\n", square);
}
这是有效的,因为宏替换了文本,所以这段代码实际上被转换为:
int main() {
int square = 3 * 3;
printf("%d\n", square);
}
这段代码被输入到实际的编译器中。像宏这样的函数是另一回事。
这是一个更疯狂的宏:
#define DECLARE_SQUARE(dec, num) dec = num * num
在这种情况下,你奇怪的语法有效。
DECLARE_SQUARE(int sqr, 3);
/*Preprocesses into:
int sqr = 3 * 3; */
不要混淆我的宏,宏有奇怪的语法,因为它们首先被送入预处理器而不是直接送入实际的真正编译器。宏可以有任何语法。正确的 C 函数具有明确的语法。使用明确的语法,不要忘记它。
推荐阅读
- python - 将 dict 传递给参数化方法时出现“所需功能必须是字典”错误
- c# - 正则表达式与字符串 c# 不匹配
- php - 在另一个文件中加载页眉/页脚文件模板的最佳方式
- c# - 如何在 .NET Core 中以编程方式下载最新的 nuget 包?
- android - 如何在不实现活动的情况下在文本选择菜单中添加自定义项?
- java - 如何修复在elasticsearch存储库中没有为[field]注册的[query]?
- python - 使用 pymssql 连接数据库并使用表中的标题获取数据
- sql - 检查其他 2 个日期字段之间的日期字段
- c# - ASP.NET Core MVC - 具有多个步骤的表单 - 如何在每个步骤中触发客户端验证
- java - 在滑动刷新时显示一些文本而不是进度条