1. 要使用C++函数,必须完成:
提供函数定义
提供函数原型
调用函数
2. 库函数是已经定义和编译好的函数,同时可以使用标准库头文件提供其原型,因此只要正确调用就好。
C++对于返回值有一定限制:不能是数组,但可以是其他任何类型--整数,浮点数,指针,甚至可以是结构和对象(虽然C++函数不能直接返回数组,但可以将数组作为结构或对象组成部分来返回)
通常,函数将返回值复制到指定的CPU寄存器或内存单元中来将其返回。
3. C++将数组名解释为其第一个元素的地址 cook = &cook[0];
在C++中,当且仅当用于函数头或函数原型中,int* arr 和 int arr[] 的含义才是一样的,都意味着arr是一个int 的指针。
通过两个不同的参数来传递数组类型和长度 void func(int arr[], int size); 而不要用方括号表示数组长度 int func(int arr[size]);
4. C++ 禁止将const的地址赋给非const指针
例: const float a = 3.2;
const float *b = &a; // 可行的
float *c = &a; //Invalid
attention: 如果数据类型 本身并不是指针,则可以将const数据和非const数据的地址赋给指向const的指针,但只能将非const数据的地址赋给非const指针。
5. 尽可能使用const
将指针参数声明为指向常量数据的指针有两条理由:
- 可以避免由于无意间修改数据而导致的编译错误
- 使用const使得函数能够处理const和非const实参,否则之恶ngn接受非const数据
如果条件允许,应该将指针形参声明为指向const的指针。
6. ar2[r][c] == *(*(ar2+r) + c) ;
7. 将字符串传作为参数传递给函数,则表示字符串的方式有3种:
- char数组
- 用引号括起来的字符串常量(也称字符串字面值)
- 被设置为字符串的地址的char 指针
字符串与常规的char数组的区别:字符串有内置的结束字符(包含字符,但不以空值字符结尾的char数组这是数组,而不是字符串)。意味着不必将字符串长度作为参数传递给函数,而函数可以使用循环一次检查字符串中的每个字符,知道遇到结尾的空值为字符为止。
8. 函数无法返回一个字符串,但可以返回字符串的地址,这样效率很高。
9. C++不允许main调用自己。
函数的地址是存储其机器语言代码的内存的开始地址。
函数指针
- 获取函数的地址 func()是一个函数,则func就是它的地址
- 声明一个函数指针 double (*pf)(int) *pf是函数,pf就是函数指针
- 使用函数指针来调用函数 void est(double (*pf) (int))