本文内容出自《高质量C、C++编程指南》。阅读之后理解,然后通过自己的话和例子讲清楚,这样才是学习之道。以下内容都是自己所认为的东西,如果哪里错了,希望各位大神指出。1、数组作为函数的参数进行传递时,该数组自动退化为同类型的指针结果:第一张图中,str为数组,此时的长度为6,而作为函数参数时退化为指针了,指针的长度固定为4。第一张图中,str为数组,所以不能对str进行自增或自减,而在函数中是可以的,因为退化为指...
使用void(Student::*pwho) void = & Student::who // 构造函数指针使用string Student::*p_name = & Student::m_name //构造变量指针 #include <iostream>
#include <cstdio>usingnamespace std; class Student{
public:Student(conststring& name):m_name(name){} void who(void){cout << "学生的名字是" << m_name << endl; }string m_name;
}; int main() {//成员函数指针void(Student::*pwho)(void) = &Student::who; //成员变...
第一篇、函数指针函数指针,表示的是一个指针,它指向的是一个函数,它含义是指指向函数的指针变量,在C编译时,每一个函数都有一个入口地址,那么这个指向这个函数的函数指针便指向这个地址。函数指针的用途是很大的,主要有两个作用:1、用作调用函数2、做函数的参数。函数指针的声明方法:数据类型标志符 (指针变量名) (形参列表);一般函数的声明为:int func ( int x );
而一个函数指针的声明方法为:int (*func) (int x);
...
函数返回类型分为返回基本数据类型(指针函数)返回指针类型,返回的新指针指向返回值得地址 //指针函数不能返回局部量(函数内变量)的指针返回引用类型,直接返回返回值的地址 //引用函数不能返回局部量(函数内变量)的引用,不产生副本。返回引用比返回指针更直接,可读性更好函数的类型是指函数的接口,包括函数的参数定义和返回类型 如 函数double max(double,double);的类型是 double(double,double); 定义方法 ...
【送给在路上的程序员】对于一个开发者而言,能够胜任系统中任意一个模块的开发是其核心价值的体现。对于一个架构师而言,掌握各种语言的优势并可以运用到系统中,由此简化系统的开发,是其架构生涯的第一步。对于一个开发团队而言,能在短期内开发出用户满意的软件系统是起核心竞争力的体现。每一个程序员都不能固步自封,要多接触新的行业,新的技术领域,突破自我。cppIDE使用mfc和codeblocks中的mingw编译器。执行system命令中...
C++要是不常用,相信过四天你的指针函数与函数指针的概念就该忘个精光。
其实只要记住谁在后面谁就是哪个本质。
先了解下指针数组与数组指针吧
数组指针
就是指向数组的指针,它表示的是一个指针,它指向的是一个数组,它的重点是指针,如,int(*pa)[8]声明了一个指针,该指针指向了一个有8个int型元素的数组
指针数组
就是指针的数组,表示的是一个数组,它包含的元素是指针,它的重点是数组。如, int* pa[8]声明了一个数组,该...
函数指针可以方便我们调用函数,但采用函数对象,更能体现c++面向对象的程序特性。
函数对象的本质:()运算符的重载。我们通过一段代码来感受函数指针和函数对象的使用: 1 int AddFunc(int a, int b) 2 { 3 return a + b; 4 } 5 6 class Add7 {8 public:9 const int operator()(const int a,const int b)
10 {
11 return a+b;
12 }
13 };
14
15 int main()
16 {
17 //函数指针
18 int (*A...
c1
func2
func3
22
28
Hit any key to continue...#include <iostream>
#include <string.h>
using namespace std;void func1(){cout<<"func1"<<endl;
}
void func2(){cout<<"func2"<<endl;
}
void func3(){cout<<"func3"<<endl;
}
int func4(int x){cout<<x<<endl;return x+6;
}int main(int argc, char **argv)
{void (*f1)(){func1};(*f1)();//?????°???é’?void (*f[])(){func2,func3};//?????°??°??????é’?(*f[0])();(*f[1])...
函数中的数值传递分为值传递和地址传递。
值传递是单纯的复制,修改的只是形参。
void swap(int a, int b)
{int temp = a;a = b;b = temp;cout << "swap a = " << a << endl;cout << "swap b = " << b << endl;
}地址传递是由形参复制实参的地址,通过解引用的方式访问这个地址,修改后得到的是实参地址上的数据,也就是通过地址传递是可以修改实参的。
void swap_ptr(int *p1, int *p2)
{int temp = *p1;*p1 = *p2;*p2 = temp;cou...
原文链接:https://www.cnblogs.com/jainszhang/p/10704514.htmlC++把函数A作为参数传递给另外函数B时,实际上是把函数A作为指针传递给另外的函数B,这就涉及到了函数指针。
1.函数指针
函数指针声明如下:
return_type (*p_name)(arg_list);
//表示返回值为return_type,参数列表为arg_list的函数指针p_name.例如:
//定义一个函数
int add(int a,int b)
{return a+b;
}int (*pfun)(int,int);//声明一个函数指针 pfun,参数列表为 i...
四、析构函数(Destructor)
public:~类名(void){...}//析构函数
1、析构函数特点
(1)析构函数是特殊的成员函数,名字“~类名”
(2)没有返回类型,没有参数,不能被重载(能被重载的充分必要条件是包含参数),一个类只能有一个析构函数
(3)主要负责清理对象在构造时动态分配的资源class Integer{public:Integer(int data):m_data(new int(data)){...}//创建对象时会动态分配一块内存~Integer(void)(){//对象销毁时自动被...
定义
1.指针函数,本质是函数,返回值为指针,形如,int *pfun(int, int),由于“*”的优先级低于“()”的优先级,所以等同于int *(pfun(int, int))
2.函数指针,本质是指针,返回一个函数,形如,int (*pfun)(int, int),括号强行将pfun首先与“*”结合,也就意味着,pfun是一个指针,接着与后面的“()”结合,说明该指针指向的是一个函数,然后再与前面的int结合,也就是说,该函数的返回值是int。由此可见,pfun是一个指向返回值为...