【C++基础(十三)函数指针】教程文章相关的互联网学习教程文章

c++ 指针(三)【代码】【图】

指针 (6)传递指针给函数 只需要简单地声明函数参数为指针类型即可#include <iostream> #include <ctime>using namespace std; void getSeconds(unsigned long *par);int main () {unsigned long sec;getSeconds( &sec );// 输出实际值cout << "Number of seconds :" << sec << endl;return 0; }void getSeconds(unsigned long *par) {// 获取当前的秒数*par = time( NULL );return; }结果:Number of seconds :1294450468 能接...

c++ 指针(二)【代码】【图】

指针 (4)指针数组#include <iostream>using namespace std; const int MAX = 3;int main () {int var[MAX] = {10, 100, 200};for (int i = 0; i < MAX; i++){cout << "Value of var[" << i << "] = ";cout << var[i] << endl;}return 0; }Value of var[0] = 10 Value of var[1] = 100 Value of var[2] = 200指向整数的指针数组的声明: int *ptr[MAX]; 把 ptr 声明为一个数组,由 MAX 个整数指针组成。因此,ptr 中的每个元素,...

C++——智能指针

智能指针的目的: 解决内存泄漏和指针悬挂。 内存泄漏: 不再使用的内存没有得到释放。 悬挂指针: 悬挂指针也叫野指针,是未初始化或未清零的指针。与空指针(NULL)不同,悬挂指针无法通过简单地判断是否为 NULL避免,而只能通过养成良好的编程习惯来尽力减少。 悬挂指针的成因主要有两种: 指针变量没有被初始化,任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应...

C++指针、this指针、静态成员【代码】

C++指针、this指针、静态成员 一、C++ this指针 this指针指向调用的对象本身,在成员函数中,都会有一个默认的参数this。这点如果学过Python的话,可能会知道,在Python中每一个成员函数都会一个参数self,这里的this就是差不多的东西。其实具体来说,this指针也是指针,它存储的也是一个地址。当我们用一个对象去调用一个成员函数时,我们会把该对象的地址传给该函数,这也就是在函数中的this参数。因此this指针中存储的是调用对象...

浅谈借助指针突破C++类访问权限【代码】【图】

浅谈借助指针突破C++类访问权限 有以下代码: #include <iostream> using namespace std; class A { public:A(int a, int b, int c):m_a(a),m_b(b),m_c(c) {}; private:int m_a;int m_b;int m_c; };int main() {A obj(1, 2, 3);int a = obj.m_a; //Compile ErrorA* p = new A(5, 6, 7,);int b= p->m_b; //Compile Errorreturn 0; }? 上面代码编译不通过,由类的访问权限可知,private对象不可直接访问。但这只是语法层面的不可访...

C++中的字符串比较——字符数组、字符串(类)、字符指针【代码】

字符串比较 正如在C++中可以用3种方法(字符数组、字符串(类)、字符指针)访问一个字符串,比较字符串(内容)自然也有这三种基本形式。废话不多说,上代码,一看便知 #include <iostream> #include <string.h>using namespace std;int main() {char str1[] = "abc";char str2[] = "abc";string str3 = "abc";string str4 = "abc";const char* str5 = "abc";//指向字符串的字符指针str5const char* str6 = "abc";//指向字符串的字符指...

C++成员函数指针及C++函数对象【代码】

原文链接:http://www.cnblogs.com/cmleung/archive/2011/05/23/2054646.html 今天下午去图书馆淘书,又把《C++必知必会》借来了。我记得自己是没怎么看过的,翻了几页才发现很多文字似曾相识。原来当初就看了两三节,真是汗颜。 C++这门课程当初学得倒是挺好,不过时过境迁,许多生僻的语法大抵都忘光了。比如说函数成员,看到"->*"这玩艺儿我心里都发忤。 好还,谷歌一下就真相大白了:http://campus.chsi.com.cn/xy/...

C++ 智能指针auto_ptr详解【代码】

原文链接:http://www.cnblogs.com/jiangheng/p/3790060.html1. auto_ptr 的设计动机: 函数操作经常依照下列模式进行: 获取一些资源 执行一些动作 释放所获取的资源 那么面对这些资源的释放问题就会出现下面的两种情况: 一开始获得的资源被绑定于局部对象,那么当函数退出的时候,这些局部对象的析构函数被自动的调用,从而自动释放掉这些资源; 一开始获得的资源是通过某种显示手段获取,而且并没有绑定在任何对象身上,那么必须以...

c++函数参数或返回值为函数指针【代码】

原文链接:http://www.cnblogs.com/richard-g/p/3643337.htmlC++中函数指针的形式为:返回值类型 + 参数类型,函数没有值类型,但是却可以声明函数的指针,因为函数是可寻址的,存放在内存中的代码段,可以从指针访问。 函数指针可以声明为:void (*pF)(void); // ^括号1 // ^括号2其中pF为参数为空,返回值也为空的函数类型,因为*操作符的优先级低于函数调用操作符,所以必须在*pF外加括号。 那么如何声明返回值为函数...

C++类的对象和类的指针的区别【代码】

1 #include <iostream> 2 #include <string> 3 using namespace std; 4 class Student 5 { 6 public: 7 static int number; 8 string name; 9 10 public: 11 Student() { } 12 void set(string str) 13 { 14 name = str; 15 number++; // 调用静态数据成员 16 } 17 18 void print() // 态成员函数 print() 19 { 20 std::cout < < name < <" : The number of the students is " < < number < < " numbers." < < std...

C++-初始化表,this指针,常函数,析构函数,拷贝构造,拷贝赋值(day5续)【代码】

四、析构函数(Destructor) public:~类名(void){...}//析构函数 1、析构函数特点 (1)析构函数是特殊的成员函数,名字“~类名” (2)没有返回类型,没有参数,不能被重载(能被重载的充分必要条件是包含参数),一个类只能有一个析构函数 (3)主要负责清理对象在构造时动态分配的资源class Integer{public:Integer(int data):m_data(new int(data)){...}//创建对象时会动态分配一块内存~Integer(void)(){//对象销毁时自动被...

C/C++ Char指针到指针和数组【代码】

有一个带有标题的函数,例如:BPS_API int dialog_event_get_filebrowse_filepaths(bps_event_t* event,char** file_paths[], int* num_paths);这是来自BlackBerry 10的Native SDK,适合任何想知道的人(可以找到here). 问题是:我应该提供什么作为第二个论点.此函数应填充一个char指针数组,以便返回所选的文件路径. 我试着这样称呼它:char* ar[2]; dialog_event_get_filebrowse_filepaths(event, &ar, &number_paths);我从QNX Momen...

用于空安全指针访问的C/C++宏【代码】

我想为空安全指针访问编写一个C/C++宏.我目前有这个,效果很好:#define NULL_SAFE(p, e) if (p) p->e NULL_SAFE(myPtr, myMethod(myArg));但我真正想要的是拥有这样的东西:NULL_SAFE(myPtr, myMethod(myArg),myOtherPtr, myOtherMethod(myOtherArg),yetAnotherMyPtr, plsStopMethod(grArg),... );这将扩展到:if (myPtr) myPtr->myMethod(myArg);if (myOtherPtr) myOtherPtr->myOtherMethod(myOtherArg);if (yetAnotherMyPtr) yet...

C++ 高级数据类型(三)—— 指针【图】

我们已经明白变量其实是可以由标识来存取的内存单元。但这些变量实际上是存储在内存中具体的位置上的。对我们的程序来说,计算机内存只是一串连续的单字节单元(1byte cell),即最小数据单位,每一个单元有一个唯一地址。 计算机内存就好像城市中的街道。在一条街上,所有的房子被顺序编号,每所房子有唯一编号。因此如果我们说芝麻街27号,我们很容易找到它,因为只有一所房子会是这个编号,而且我们知道它会在26号和28号之间。 同...

C++---智能指针上【图】

首先要知道智能指针是用来解决什么问题的,首先我们先看下面这段代码void Func(int *p) {int *sp = new int;if (p == NULL){throw std::exception("p is NULL");}delete sp; } 这个函数有一个很大的问题,如果传入的参数p为空,遇到 if 语句就命中之后就会抛出异常,程序中断。那么指针sp指向开辟的内存没有释放,导致内存泄漏。有什么方法可以来解决这个问题? 栈:系统开辟内存,系统释放;堆:手动开辟内存,手动释放。那么如果...