12、函数常见错误

一、常见错误

1、未定义先使用
1.1、源代码
1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
int main()
{
printStr();
return 0;
}
void printStr()
{
printf("printStr()\n");
}
1.2、运行结果:

无法通过编译环节,理由是 printStr未声明定义

1.3、解决

增加函数声明或者把函数定义放在调用处之前

2、形参和实参不匹配
2.1、源代码
1
2
3
4
5
6
7
8
9
10
#include<stdio.h>
void printStr(int a,int b)
{
printf("printStr()-->%d,%d\n",a,b);
}
int main()
{
printStr(1);
return 0;
}
2.2、运行结果

无法通过编译环节

2.3、解决

只能按照形参个数进行传递

3、有多个函数名相同
3.1、源码
1
2
3
4
5
6
7
8
9
10
11
12
13
#include<stdio.h>

void test()
{}

void test(int a)
{}

int main()
{
test();
return 0;
}
3.2、运行结果

无法通过编译环节

4、基本类型参数是值传递
4.1、源代码
1
2
3
4
5
6
7
8
9
10
11
12
#include<stdio.h>
void changeValue(int a)
{
a += 10;
}
int main()
{
int a = 10;
changeValue(a);
printf("a=%d\n",a);
return 0;
}
4.2、运行结果

运行结果
既无法修改实参a的变量值

4.3、内存图

内存图