C++ 函数



//在原型的函数里面能够包含变量名也能够不包含。

原型中的变量名相当于占位符。因此不必与函数顶一种的变量名同样。 int prototype(int,int); //c++能够省去变量名,仅当接受可变參数的c语言(printf)交互时才这么做。 void ellipsis(...); //定义一个传数组的函数 void log_arr(int arr[], int num) { int i; for (i = 0; i < num; ++i) { printf("log this num is %d\n", arr[i]); } }; //当且仅当用于函数头或者函数原型中,int *arr 和 int arr[]的含义才是同样的,他们都意味着arr是一个int指针 void log_arr_same(int *arr, int num) { //数组的两个恒等式 // int i; // arr[i] == *(arr + i); // &arr[i] == arr + i; }; //为了防止函数无意中改动数组的内容,可在声明形參时使用关键词 const void log_arr_not_modify(const int *arr, int num); //指针和const void pointer_and_const() { int age = 39;//age can be modify. const int* pt = &age;//pt can't be modify //*pt = 38;// read-only variable is not assignable age = 38; //This's ok. const int anotherAge = 40; //int* pAge = &anotherAge;//不可行。

//改动const指针,指向指针的指针 const int **pp2; int *p1; const int n = 13; //pp2 = &p1;//不同意 *pp2 = &n; *p1 = 10; }; //传一个二维数组。第二维长度智能为4 int sum(int arr[][4], int size); int sum_same(int (*arr)[4], int size); //传递结构的地址而不是整个结构能够节约时间和空间 //void print_student(const Student* stu); //递归 void recurs(int start) { printf("recures is %d\n", start); if (start) { recurs(--start); } else { printf("recures is done\n"); } printf("end\n"); } //函数指针 void func_pointer_test() { static int i = 0; ++i; printf("我被调用了--%d\n", i); } void func_pointer() { /* 为提供正确的运算符优先级,必须在声明中使用括号将*pf括起。括号的优先级比*高。

因此*pf(int) 意味着pf()是一个返回指针的函数 而(*pf)(int) 意味着pf是一个指向函数的指针 */ void (*pf)(void); pf = func_pointer_test; pf(); } //声明。并实现一个传入一个函数及运行次数的函数 void func_pointer_callback(void (*pf)(void),int times) { while (times--) { pf(); } } void func_pointer_declare() { //声明并实现长度为三的函数指针数组 void (*pf[3])(void) {func_pointer_test, func_pointer_test, func_pointer_test}; pf[0](); //使用typedef进行简化 typedef void(*call_back)(void); call_back back = func_pointer_test; back(); call_back fun_pointer_arr[3] = {back, back, back};//三个函数指针的数组 fun_pointer_arr[0](); call_back (*pointer_func_arr)[3] = &fun_pointer_arr;//指向有三个方法指针的数组 (*pointer_func_arr[0])(); } //用于宏測试的方法 int add(int a, int b){ return a + b; } // 定义測试static的方法 int count() { //仅仅会在函数声明的时候声明这个变量。 static int count = 0; ++count; return count; }



//定义宏方法
#define ADD(_Num1_,_Num2_) add(_Num1_,_Num2_);








posted @ 2016-01-25 11:05  mengfanrong  阅读(170)  评论(0编辑  收藏  举报