【探讨c/c++的指针】教程文章相关的互联网学习教程文章

(C/C++学习)23.C++中指针的长度【代码】

引言:先看下面一个程序会打印出什么? 1 #include<iostream>2 using namespace std;3 int main()4 {5 int a = 2; int *p = &a;6 double b = 1; double *q = &b;7 float c = 3; float *l = &c;8 char d = s; char *s = &d;9 10 11 cout << sizeof(a) << "" <<sizeof(p) << endl;12 cout << sizeof(b) << "" << sizeof(q) << endl;13 cout << sizeof(c) << "" << sizeof(l) << end...

C++-智能指针详解(待更新)【图】

引言 除了静态内存和栈内存外,每个程序还有一个内存池,这部分内存被称为自由空间或者堆。程序用堆来存储动态分配的对象即那些在程序运行时分配的对象,当动态对象不再使用时,我们的代码必须显式的销毁它们。 在C++中,动态内存的管理是用一对运算符完成的:new和delete,new:在动态内存中为对象分配一块空间并返回一个指向该对象的指针,delete:指向一个动态独享的指针,销毁对象,并释放与之关联的内存。 动态内存管理经常会出...

C++ 值传递、指针传递、引用传递详解【代码】

转载:http://www.cnblogs.com/yanlingyin/ 值传递: 形参是实参的拷贝,改变形参的值并不会影响外部实参的值。从被调用函数的角度来说,值传递是单向的(实参->形参),参数的值只能传入, 不能传出。当函数内部需要修改参数,并且不希望这个改变影响调用者时,采用值传递。 指针传递: 形参为指向实参地址的指针,当对形参的指向操作时,就相当于对实参本身进行的操作 引用传递: 形参相当于是实参的“别名”,对形参的操作其实就...

C++中的指针与运用【图】

指针和引用形式上很好区别,但是他们似乎有相同的功能,都能够直接引用对象,对其进行直接的操作。但是什么时候使用指针?什么时候使用引用呢?这两者很容易混淆,在此我详细介绍一下指针和引用,力争将最真实的一面展现给大家。如果我喷得不够好,希望嘴下留情、手下留命,还请指点一二;如果感觉还不错,请大家鼓掌。 创一个小群,供大家学习交流聊天如果有对学C++方面有什么疑惑问题的,或者有什么想说的想聊的大家可以一起交流学...

C++ 函数指针总结【代码】

概要:函数指针介绍 typedef简化函数指针的定义 指向函数的指针的初始化和赋值 通过指针调用函数 函数指针形参 返回指向函数的指针 指向重载函数的指针 函数指针介绍函数指针是C++中比较灵活而且重要的部分,对于软件的灵活度上有很大的帮助 ! 函数指针指向的是函数而非对象,和其他指针一样,函数指针指向某种特定类型,函数的类型由它的返回类型和形参类型共同决定,与函数名无关。bool lengthCompare(const string &,const str...

C++智能指针的实现【代码】

转自 C++11中智能指针的原理、使用、实现 #include <iostream> #include <memory> template<typename T> class SmartPointer { private:T* _ptr;size_t* _count; public:SmartPointer(T* ptr = nullptr) :_ptr(ptr) {if (_ptr) {_count = new size_t(1);} else {_count = new size_t(0);}}SmartPointer(const SmartPointer& ptr) {if (this != &ptr) {this->_ptr = ptr._ptr;this->_count = ptr._count;/** 所以实际上是共用了一个...

C++指针速记【代码】

基本原则:指针类型变量存储的就是地址! 1.数组名就是数组首元素的地址**int age[3];int* p = age; 2.使用new操作符实际上是向操作系统申请一块内存(包含类型信息),返回的就是该块内存的地址。我们要引用他,就要指针指向这段内存的地址。 int* p1 = new int(10);//该int的值为10 Student* p3 = new Student;//其中Student是结构体 3.->操作符,专门用于操作指针指向对象(结构体,对象)的成员 p3->age = 13; 4.操作符可以操作指针...

关于C/ c++指针的5大问题【图】

伙伴们注意了! 小编在这里给大家送上关注福利: 转发本文,关注“速学Java”公众号即可领取小编精心准备的资料一份 本文总结了有关stackoverflow.com上的C/ c++指针的常见问题。 指针是C/ c++中最令人困惑的部分,这些问题使用简单的例子来解释关键指针的概念。 1. 不用循环从1数到1000计算1到1000的唯一其他方法是使用递归。 根据C语言,j在开始时的值是“1”。 当1 <= j < 1000时,&main + (&exit - &main)*(j/1000)总是计算到&...

c/c++指针常见错误【代码】

一#include <bits/stdc++.h> using namespace std; void f(char *str) {char *s = str;str[0] = 0 //error str是指向常量的指针,只能读取不能修改,如果str是malloc过则可以修改s[1] = 1; //同上errorcout<<s<<endl; } int main() {char *s = "We Are Happy.";f(s);puts(s);return 0; }二#include <bits/stdc++.h> using namespace std; void f(char *str) {char *s = str;s[0] = a, s[1] = b, s[2] = c, s[3] = \0;str = s; } int...

[C++11新特性] 智能指针详解

动态内存的使用很容易出问题,因为确保在正确的时间释放内存是极为困难的。有时我们会忘记释放内存产生内存泄漏,有时提前释放了内存,再使用指针去引用内存就会报错。 为了更容易(同时也更安全)地使用动态内存,新的标准库提供了两种智能指针类型来管理动态对象。智能指针的行为类似常规指针,区别在于它负责自动释放所指向的对象。这两种智能指针的区别在于管理底层指针的方式:shared_ptr允许多个shared_ptr类型指针指向同一个...

C++使用指针的优点

使用指针可以带来如下的好处: (1)可以提高程序的编译效率和执行速度,使程序更加简洁。 (2)通过指针被调用函数可以向调用函数处返回除正常的返回值之外的其他数据,从而实现两者间的双向通信。 (3)利用指针可以实现动态内存分配。 (4)指针还用于表示和实现各种复杂的数据结构,从而为编写出更加高质量的程序奠定基础。 (5)利用指针可以直接操纵内存地址,从而可以完成和汇编语言类似的工作。 (6)跟容易实现函数的编写...

c++ 智能指针用法详解

c++ 智能指针用法详解转自博客:http://www.cnblogs.com/TenosDoIt/p/3456704.html ?本文介绍c++里面的四个智能指针: auto_ptr, shared_ptr, weak_ptr, unique_ptr 其中后三个是c++11支持,并且第一个已经被c++11弃用。 为什么要使用智能指针:我们知道c++的内存管理是让很多人头疼的事,当我们写一个new语句时,一般就会立即把delete语句直接也写了,但是我们不能避免程序还未执行到delete时就跳转了或者在函数中没有执行到最后的...

c++多态 父类指针指向子类对象思考【代码】

//oop.h class A{ public:virtual void l(){fun();}void fun(); public:int a; }; class B:public A{virtual void l(){fun1();}void fun1(){std::cout<<"B"<<std::endl;}public:int m; };void A::fun() {std::cout<<"a"<<std::endl; }可以看出A为基类B为子类 //main.cpp void main{ A* p=new B;//很正常的父类指针指向子类。 }父类的指针指向子类B的对象,所以不能访问B对象中不是从A继承下来的成员。比如 p->m//不行的 p->a//可行...

C++:举例说明如何使用enable_if和模板的函数指针参数

下面的这个例子主要实现如下功能: 当参数为数据类型时,调用std::to_string()方法将数值转化为字符串并输出。 当参数为std::string类型时,直接使用std::string的值输出。 当参数为对象时,如果对象中含有std::string str()方法,则调用对象的std::string str()方法; 如果对象不含std::string str()方法,则返回空字符串。class Box { public:string str() {return "yes";} };class Bin { public:string str1() {return "no"...

(C/C++学习)16.函数指针

说明:函数指针,顾名思义就是指向函数的指针。C/C++中函数名的本质其实就是一段代码段空间的首地址。1.定义如下的 pf 就是一个函数指针,指向所有返回类型为 int,并带有两个 const int&参数的函数。需要注意的是 *pf 两边的括号不能少,否则面定义就变成了声明了一个函数 pf,其返回类型为 int *, 带有两个 const int&参数。 1 int (*pf)(const int, const int);2.取别名如果每次都像上面那样来声明一个函数,那样就显得太复杂...