指针传递函数参数的简单问题
求教各位高人:
[code=C/C++][/code]
#include <stdio.h>
#include <iostream>
using namespace std;
int main()
{
int a=3, b=4;
cout<<"主程序中交换前a="<<a<<"b="<<b<<endl;
swap_test(&a,&b);
cout<<"主程序中交换后a="<<a<<"b="<<b<<endl;
return 0;
}
void swap_test(int *a, int *b)
{
int c;
cout<<"函数中交换前a="<<a<<"b="<<b<<endl;
c=*a;
*a=*b;
*b=c;
cout<<"函数交换后a="<<a<<"b="<<b<<endl;
}
这段程序在执行后,总是报错说swap_test找不到标识符???还有如果把整个swap_test函数放入int main()里的话,又会出现swap_test:本地函数的定义是非法的!!
这是为什么啊???
[解决办法]
- C/C++ code
#include <stdio.h>#include <iostream>using namespace std;void swap_test(int *a, int *b);//函数提前声明 即出现在主函数前面int main(){ int a=3, b=4; cout<<"主程序中交换前a="<<a<<"b="<<b<<endl; swap_test(&a,&b); cout<<"主程序中交换后a="<<a<<"b="<<b<<endl; return 0;}void swap_test(int *a, int *b){ int c; cout<<"函数中交换前a="<<a<<"b="<<b<<endl; c=*a; *a=*b; *b=c; cout<<"函数交换后a="<<a<<"b="<<b<<endl;}
[解决办法]
void swap_test(int *a, int *b)
{
int c;
cout<<"函数中交换前a="<<a<<"b="<<b<<endl;
c=*a;
*a=*b;
*b=c;
cout<<"函数交换后a="<<a<<"b="<<b<<endl;
}
放在main()函数前,就不会有错了
[解决办法]
- C/C++ code
#include <stdio.h>#include <iostream>using namespace std;void swap_test(int *a, int *b){int c;cout<<"函数中交换前a="<<a<<"b="<<b<<endl;c=*a;*a=*b;*b=c;cout<<"函数交换后a="<<a<<"b="<<b<<endl;}int main(){int a=3, b=4;cout<<"主程序中交换前a="<<a<<"b="<<b<<endl;swap_test(&a,&b);cout<<"主程序中交换后a="<<a<<"b="<<b<<endl;return 0;}