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

C++ 指针常量、常量指针和常指针常量【图】

1、指针常量 如果在定义指针变量时候,指针变量前用const修饰,被定义的指针变量就变成了一个指针类型的常变量,指针类型的常变量简称为指针常量。 格式如下 数据类型 * const 指针变量=变量名; 修饰符const与指针变量紧邻,说明指针变量不允许修改,既然指针变量的值不能修改,所以一定要在定义的时候给定初值(指向一个确定存在的地方) 如下<span style="font-size:18px; ">char * const p="ABCDEF"; p=NULL;//错误,指针常...

C++学习笔记34:用指针访问数组元素和指针数组【代码】

指针访问数组元素 指针的运算本身就是适合对连续的数据进行处理,而数组正好满足这一要求。所以这一节研究如何使用指针访问数组元素。 首先我们举个例子 int a[10],*p;//定义一个数组和一个指针变量p p=a;//或者p=&a[0];这两句话的意思都是将数组a的首地址赋值给p等效形式 *p就是a[0],是寻址运算符,就是找到p变量中保存的地址里面的内容,即数组a的第一个元素。 同理(p+i)就是找到对应数组中的第i个元素a[i]。 与此同时 *(a+i)和p...

c++中的四种智能指针

c++中的四种智能指针 写惯了python,golang再来写c++总觉得头大,很大一个原因就是他没有一个GC机制。 不过c++中提供了智能指针,也不是不能用,李姐万岁!auto_ptr, shared_ptr, weak_ptr, unique_ptr 其中后三个是c++11支持,并且第一个已经被11弃用。1.auto_ptr 这个指针采用了所有权的方式, #include<memory> #include <iostream> using namespace std; int main() {auto_ptr<string> p_s1(new string("this is a string"));...

C++2.0新特性(六)——<Smart Pointer(智能指针)之shared_ptr>【代码】【图】

Smart Pointer(智能指针)指的是一类指针,并不是单一某一个指针,它能知道自己被引用的个数以至于在最后一个引用消失时销毁它指向的对象,本文主要介绍C++2.0提供的新东西 一、Smart Pointer分类C++2.0提供了两大类型的智能指针,该模块都被定义于头文件<memory>: - 文章图片" /> 二、标准库提供的智能指针类 2.1 class shared_ptr提供了共享式拥有语义,也就是说当对个shared_ptr可以共享(或拥有)同一个对象,对象的最后...

牛课-C++基础知识-指针数组/数组指针相关题目

1. 对下面变量声明描述正确的有()int?*p[n]; int?(*)p[n]; int?*p(); int?(*)p();int *p[n];—–指针数组,每个元素均为指向整型数据的指针int (*)p[n];—p为指向一维数组的指针,这个一维数组有n个整型数据int *p();——函数带回指针,指针指向返回的值int (*)p();—-p为指向函数的指针正确答案:Aint *p[4]; //表示指针数组,有四个元素,每个元素都是整型指针。 int (*p)[4]; //表示行指针,所指对象一行有四个元素。 int *p...

C++数组与指针【图】

不知道在通过前面的内容学习后,是否有很多小伙伴都会认为数组和指针是等价的,数组名表示数组的首地址呢?不幸的是,这是一种非常危险的想法,并不完全正确,前面我们将数组和指针等价起来是为了方便大家理解(在大多数情况下数组名确实可以当做指针使用),不至于被指针难倒,这里就请大家忘记这种观念,因为它可能将会颠覆你之前的认知。 数组和指针不等价的一个典型案例就是求数组的长度,这个时候只能使用数组名,不能使用数组...

在C/C++中编写“指向某事物的指针”的好方法【代码】

在C/C++中编写“指向某事物的指针”有“好”的方法吗?我用来写void foo(char * str);但有时我发现它非常不合逻辑,因为str的类型是“指向char的指针”,那么将*附加到类型名称应该更合乎逻辑.写指针有规则吗?char*str; char* str; char *str; char * str;解决方法:常见的C约定是写入T * p,而常见的C约定是写入T * p.两者都解析为T(* p); *是声明符的一部分,而不是类型说明符.这纯粹是指针声明语法的一个意外,你可以用它来编写它. C...

关于c/c++中的二维数组与指针【代码】

设a是一个一维数组的数组名,则a表示其第一个元素的地址(即&a[0]),而&a表示整个数组的地址!尽管两者值相同(&a[0]==&a),因此&a是地址,*(&a)也是地址,**(&a)是第一个元素(见c++pp第245,246页和c第192页) 将非const值赋给const变量是合法的,反之是非法的,因此,在函数声明中形参应尽可能使用const,这样无论const和非const实参都能传递给函数(c++pp263页)#include <iostream> using namespace std;int main() {int x[4]...

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

如题,我们今天要讲的是C++11引入的三种智能指针中的最后一个:weak_ptr。在学习weak_ptr之前最好对shared_ptr有所了解。如果你还不知道shared_ptr是何物,可以看看我的另一篇文章【C++11新特性】 C++11智能指针之shared_ptr。 1、为什么需要weak_ptr?在正式介绍weak_ptr之前,我们先来回忆一下shared_ptr的一些知识。我们知道shared_ptr是采用引用计数的智能指针,多个shared_ptr实例可以指向同一个动态对象,并维护了一个共享的...

用汇编的眼光看C++(之指针1)【代码】

原文链接:https://blog.csdn.net/feixiaoxing/article/details/6757851 【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】 指针是我们在C/C++中经常遇到的一种数据类型。指针用的好,可以提高代码的可读性;但是如果使用不恰当,反而会造成很大的麻烦。指针,也就是指向某一种数据类型的地址。这种类型很多,它可以是编程语言自带的类型,比如说int、long、short、char、float、double、...

c++智能指针【代码】

c++智能指针 为了更安全地管理动态内存,c++11引入了智能指针,提供了包括shared_ptr,unique_ptr,weak_ptr三种不同类型的智能指针。 目录结构: 一、三种指针介绍 1.shared_ptr 2.unique_ptr(待续) 3.weak_ptr(待续) 二、智能指针的基本使用 1.创建shared_ptr对象的两种方法 2.智能指针的使用 3.引用计数 4.复位引用计数函数reset 5.获取C指针函数get 三、智能指针使用的注意细节 1.不能用栈空间的C指针构造共享指针 2.不能用一个C...

[c++]关于指针的一些问题记录【代码】

const char* 和char* 之间的转换 const char*是指向常量的指针,而不是指针本身为常量,可以不被初始化.该指针可以指向常量也可以指向变量,只是从该指针的角度而言,它所指向的是常量,通过该指针不能修改它所指向的数据. 1.const char是不能直接赋值到char的,这样编译都不能通过,理由:假如可以的话,那么通过char就可以修改const char指向的内容了,这是不允许的.所以char要另外开辟新的空间。 include <iostream> using namespace s...

面试问题之C++语言:C++中指针和引用的区别

定义: 1、引用: C++是C语言的继承,它可进行过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。引用就是C++对C语言的重要扩充。引用就是某一变量的一个别名,对引用的操作与对变量直接操作完全一样。 2、指针: 指针利用地址,它的值直接指向存在

C++11的智能指针总结

到现在为止遇到了几种智能指针 shared_ptr 特点:可以自动销毁,并且可以多个指针指向同一块动态内存,内部有一个计数器,等到计数器为零就会自动销毁 weak_ptr 特点:是shared_ptr指针的附属,weak_ptr指向shared_ptr的区域,但并不会增加shared_ptr的计数器值,而且也不可以直接使用,需要lock(),提升为shared_ptr才可以使用。 scope_ptr 特点:也可以自动释放,但是不能和其他指针共享内存,也就是一块共享内存只能有一个scope...

c++简单实现二叉树、AVL、最大最小堆、霍夫曼、集合(问题:malloc,typedef,指针)【代码】

c++简单实现二叉树、AVL、最大最小堆、霍夫曼、集合(问题:malloc,typedef,指针)(代码只是大概思路不一定能运行)前言typedef的使用stack的使用队列的使用malloc/new 的使用方法与区别c++ NULL/nullptr 的区别二叉树二叉树遍历二叉树遍历 先序遍历 先访问根结点 先序遍历左子树 先序遍历其右子树 根左右二叉树遍历 中序遍历 中序遍历左子树 访问根结点 中序遍历其右子树 左根右二叉树遍历 后序遍历 后序遍历左子树 后序遍历其...