C语言编程中函数的基本学习教程

2020-01-06 14:02:38于丽

在 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;
}

程序运行结果:

C语言编程中函数的基本学习教程

CString转int可以使用


 int my_base = _ttoi(str1);

函数声明注意要写到头函数中。

传值调用与参数
习惯其它语言(特别是 Fortran 语言)的程序员可能会对 C 语言的函数参数传递方式感到陌生。在 C 语言中,所有函数参数都是“通过值”传递的。也就是说,传递给被调用函数的参数值存放在临时变量中,而不是存放在原来的变量中。这与其它某些语言是不同的,比如,Fortran 等语言是“通过引用调用”,Pascal 则采用 var 参数的方式,在这些语言中,被调用的函数必须访问原始参数,而不是访问参数的本地副本。