【C/C++野指针】教程文章相关的互联网学习教程文章

C++ 函数指针

参考链接: http://hipercomer.blog.51cto.com/4415661/792300 C++ 静态函数指针的使用方法 demo一 调用方法void LoadingLayer::init(){ //定义两个不同类型的函数指针类型 typedef ServerZoneLayer* (*subclass)(); typedef CCLayer* (*superclass)();   //创建一个函数指针 subclass subfun = &ServerZoneLayer::create;  //强制转换函数指针类型 superclass superfun = (superclass)subfun; d...

C++ 智能指针

静态内存:局部static对象、类static成员、全局变量。  栈内存:函数内非static对象。  分配在静态或栈内存中的对象由编译器自动创建和销毁,对于栈对象,仅在其定义的程序块运行时才存在;static对象在使用之前分配,程序结束时销毁  堆内存:用于动态分配,要显示销毁。 智能指针  智能指针定义在头文件memory中。  shared_ptr类  智能指针为模板,创建时需提供类型,默认初始化的智能指针中保存着一个空指针。  ...

C++智能指针类型转换【代码】

#include <iostream> #include <memory>struct Base { int a; virtual void f() const { std::cout << "I am base!\n";}virtual ~Base(){} };struct Derived : Base {void d(){ std::cout << "Derived:d()\n"; }void f() const override{ std::cout << "I am derived!\n"; }~Derived(){} };int main(){auto basePtr = std::make_shared<Base>();std::cout << "Base pointer says: ";basePtr->f();auto derivedPtr = std::make_sha...

C++笔记_测试指针以及引用的传参情况【图】

之前一直对指针和引用的传参抱有疑问, 今天特地测试下 1.定义的指针不能使用常量进行初始化,想要使用就必须用变量定义然后传递这个变量的引用. 2.指针测试.如果传入的是&a, 函数以*a接收,那么 函数体内a=传入前的&a=地址 函数体内*a=传入前的a=真实值 函数体内&a=地址的地址, 相当于二级指针 3.引用测试.如果传入的是a, 函数以&a接收,那么 函数体内a=传入前的a=真实值 函数体内&a=传入前的&a=地...

【C\C++笔记】数组指针越界【代码】

指针越界,t的数组指针越界,修改了c的内容。 使用指针时,必须规定指针移动的范围#include?<iostream>using?namespace?std; int?main(){ ????char?c[11]="123456"; ????char?t[11]; ????for(int?i?=?0;i<20;i++){ ????????t[i]='a'+i; ????} ????cout<<c<<endl; ????return?0; }输出:PS E:\桌面> cd "e:\桌面\" ; if ($?) { g++ test.cpp -o test } ; if ($?) { .\test } lmnopqrst

C/C++指针解除引用【代码】

如果我有以下功能……void function(double *array) {double a = array[3]; // Method 1double b = *(array + 3); // Method 2 }假设数组有5个元素(我确实知道数组的长度).代码编译良好,运行正常. ‘a’和’b’确实包含预期值. 在什么情况下我会使用方法2而不是方法1?解决方法:根据[]运算符的定义,E1 [E2]在C到(*((E1)(E2)))中是等价的. 首选符号,因为它更短,更易读.

C++ 指针与二维(多维)数组【代码】【图】

在上一章中, 介绍了指针与一维数组的联系 (指针数组叫动态数组) 一维数组搞定了, 二维数组? 能否按照一维数组的思路?------可以 例:#include <iostream> using namespace std; int main() {int num[3][3];for(int i=0;i<3;i++)for(int j=0;j<3;j++)cin>>num[i][j];for(int i=0;i<3;i++){for(int j=0;j<3;j++)cout<<num[i][j]<< ;cout<<endl;}return 0; }其内存状态如下, 看不懂看这里: 现在问题是, 出现了3个指针, 如何将其融合于...

C++函数指针与指针函数干货

C++要是不常用,相信过四天你的指针函数与函数指针的概念就该忘个精光。 其实只要记住谁在后面谁就是哪个本质。 先了解下指针数组与数组指针吧 数组指针 就是指向数组的指针,它表示的是一个指针,它指向的是一个数组,它的重点是指针,如,int(*pa)[8]声明了一个指针,该指针指向了一个有8个int型元素的数组 指针数组 就是指针的数组,表示的是一个数组,它包含的元素是指针,它的重点是数组。如, int* pa[8]声明了一个数组,该...

【C++11新特性】 C++11智能指针之weak_ptr

如题,我们今天要讲的是C++11引入的三种智能指针中的最后一个:weak_ptr。在学习weak_ptr之前最好对shared_ptr有所了解。 1、为什么需要weak_ptr? 在正式介绍weak_ptr之前,我们先来回忆一下shared_ptr的一些知识。我们知道shared_ptr是采用引用计数的智能指针,多个shared_ptr实例可以指向同一个动态对象,并维护了一个共享的引用计数器。对于引用计数法实现的计数,总是避免不了循环引用(或环形引用)的问题,shared_ptr也不例...

C++函数传参中形参是值、指针、引用时的不同【代码】【图】

C++函数传参中形参是值、指针、引用时的不同 代码示例1:值传递 #include<iostream> #include<string.h> using std::cout; using std::endl; using std::cin; void swap1(int x,int y)//值传递 {int t;t=x;x=y;y=t;} int main() {int a=5,b{10}; cout<<"Before1: a="<<a<<" b="<<b<<endl;swap1(a,b);cout<<"After1: a="<<a<<" b="<<b<<endl; }运行结果截图1: 代码示例2:指针作为形参 #include<iostream> #include<string.h> ...

C++ 全面刨析使用指针方法 _new _delete【代码】【图】

指针 1 #include<iostream>2 using namespace std;3 int main() {4 int avr = 8;5 int* pn;//声明 int* pn = &avr;//初始化6 pn = &avr;7 cout << *pn << endl;8 cout << pn << endl;9 system("pause"); 10 return 0; 11 }指针的危险:int* pn; *pn=2; 指针指向的是地址,初始化一定要有初始化确定的地址,否则,指针可能指向任何位置;new对 指针 的 工作 方式 有...

【C++札记】C/C++指针使用常见的坑【图】

C/C++中的指针让程序员有了更多的灵活性,但它同时也是一把双刃剑,如果用的不好,则会让你的程序出现各种各样的问题,有人说,C/C++程序员有一半的工作量是花在处理由指针引起的bug上,可想而知,指针中包含的陷阱是多么可怕。既然如此,我们在编写代码的时候就应该把好关。 要想在编写代码的时候尽可能避免指针带来的问题,就需要知道不恰当的使用指针到底会引发哪些问题, 又该如何去避免它?下面一起来总结在使用指针时容易遇...

我说C/C++——函数参数传递方式(三种:值传递、引用传递、指针传递)【图】

目录 一、前言 二、初识三种函数参数传递方式 三、代码演示 3.1 值传递(传值) 3.2 引用传递(传引用) 3.3 指针传递、地址传递(传地址(传址)) 四、引用传递和指针传递的区别 五、小结 一、前言 本文介绍C/C++语言中三种函数参数传递方式:值传递、引用传递、指针传递,全文分为三个部分:“初识三种函数参数传递方式”“代码演示”“引用传递和指针传递的区别”。 初识三种函数参数传递方式:该部分用表格对比三种函数参数传...

C/C++ 智能指针线程池【代码】

ThreadPool.h {#ifndef __THREADPOOL_H__ #define __THREADPOOL_H__ #include <memory> #include <mutex> #include <iostream> #include <thread> #include <vector>typedef unsigned int THREADHANDLE; static THREADHANDLE ThreadHanle = -1; #define THREADBEGIN(var) if(var == ThreadHanle){return;}/* #include "ThreadPool.h" mutex m;void func(int threadID) {while (true){THREADBEGIN(threadID);std::lock_guard<mutex>...

C++:->是指针的指向运算符

->是指针的指向运算符