在 C 语言的最初定义中,可以在程序的开头按照下面这种形式声明 power 函数:int power();
函数声明中不允许包含参数列表,这样编译器就无法在此时检查 power 函数调用的合法性。事实上,power 函数在默认情况下将被假定返回 int 类型的值,因此整个函数的声明可以全部省略。
在 ANSI C 中定义的函数原型语法中,编译器可以很容易检测出函数调用中参数数目和类型方面的错误。ANSI C 仍然支持旧式的函数声明与定义,这样至少可以有一个过渡阶段。但我们还是强烈建议读者:在使用新式的编译器时,最好使用新式的函数原型声明方式。
下面给出MFC上的实现:
void CNowaMagic_MFCDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
//CDialogEx::OnOK();
//获得EDIT
CEdit* base;
CEdit* n;
base = (CEdit*) GetDlgItem(IDC_EDIT1);
n = (CEdit*) GetDlgItem(IDC_EDIT2);
CString str1;
CString str2;
CString showStr;
char tmp[10] = "";
base -> GetWindowText(str1);
n -> GetWindowText(str2);
//char* pstr = (LPTSTR)LPCTSTR(str1);
int my_base = _ttoi(str1);
int my_n = _ttoi(str2);
int result = power(my_base, my_n);
showStr = itoa(result,tmp,10);
CString str = _T("乘方运算结果为:");
MessageBox(str + showStr,_T("程序运行结果"),MB_OK);
str.ReleaseBuffer();
}
int power(int base, int n)
{
int i, p;
p = 1;
for (i = 1; i <= n; ++i)
p = p * base;
return p;
}
程序运行结果:
CString转int可以使用
int my_base = _ttoi(str1);
函数声明注意要写到头函数中。
传值调用与参数
习惯其它语言(特别是 Fortran 语言)的程序员可能会对 C 语言的函数参数传递方式感到陌生。在 C 语言中,所有函数参数都是“通过值”传递的。也就是说,传递给被调用函数的参数值存放在临时变量中,而不是存放在原来的变量中。这与其它某些语言是不同的,比如,Fortran 等语言是“通过引用调用”,Pascal 则采用 var 参数的方式,在这些语言中,被调用的函数必须访问原始参数,而不是访问参数的本地副本。











