C++学习随笔之四:函数C++编程模块

1.函数原型:函数原型描述了函数到编译器的接口,也即是说它将函数返回值的类型以及参数的类型数量告诉编译器。

2.指针和const:

const用法有两种:一种是让指针指向一个常量对象(指针所指的内容是const),另一种是将指针本身声明为常量(指针为const)。

int age =39;

const int * pt = &age;

int const *pt  与 const int *pt 是完全相同的。

该声明指出,pt指向一个const int(这里是39),因此不能用pt来修改这个值,也即是说,*pt的值为const,不能被修改(不能通过*pt修改age的 

值),但是可以通过age修改age的值。

在C++中,禁止将const地址赋给非const指针。如:

const float fg= 1.54;

float *pm= &fg; // 这种赋值是非法的。

而如下赋值是对的:

cosnt float fg=1.54;

const *pm= &fg;

注意:如果数据类型本身并不是指针,则可以将const数据或非const数据的地址赋给指向const的指针,但只能将非cosnt数据的地址赋给非const指针

指针的另一些妙用:

请看下面声明:

int num=39;

cosnt int * pt=& num;

在上面第二个声明中,cosnt只能防止修改pt指向的值,而不能防止修改pt的值,也即是说可以将一个新的地址赋给pt:

int age=34;

pt = &age;

但是仍然不能使用pt修改其指向的值。

第二种使用const方式,使得无法修改指针的值:

int sum= 440;

const int * pt =∑

int * const pm = ∑

在上面第三个声明中,使得pm只能指向sum,但是运行使用pm修改sum的值,第二个声明不允许使用pt修改sum的值,但运行将pt指向另一个

地址。简而言之,pm和*pt都是const(常量),而*pm和pt不是。

3. 数组与结构:数组名是地址,而结构名不是,要获取结构的地址,必须采用取址符&。

4.函数指针:

函数指针声明:通常要声明指向特定类型函数的指针,可以首先写出该函数的原型,然后用(*fp)替换函数名,这样fp就是这类函数的指针。

例:

double pam (int );

double (*fp)(int );

其中(*fp)必须加括号,因为括号的优先级比*高,故 *fp(int) 意味着fp()是一个返回指针的函数,而(*fp)(int)是一个指向函数的指

针。声明完后可以把地址赋给指针:fp = pam;

指针函数调用:

在使用函数指针时,只需将其看作函数名,即将(*fp)看作函数名:

double pam(int);

double (*fp)(int);

fp = pam;

double x= pam(4);

double y = (*fp)(5);

    指针函数:是返回值为指针的函数。

原文地址:https://www.cnblogs.com/JczmDeveloper/p/2964796.html