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

java引用 VS C++指针小结【代码】【图】

java参数传参都是传引用,其实就是指针,但是java只能传递一级指针 public class Test {public static void test(StringBuffer str){str = new StringBuffer("world");}public static void main(String[] args){ StringBuffer str = new StringBuffer("hello");System.out.println(str); //hellotest(str);System.out.println(str); //hello} }比如上方,test(str);虽然把引用传过去了,但是在函数test里面 对str的操作使得str的方向...

C++学习笔记5_智能指针

1. 一般的指针int main(void){ int *p=new int; *p=20; delete p; return 0;}智能指针能自动回收#include<memory> 记得要引用头文件int main(void){ //auto_ptr<int>模板写法 auto_ptr<int> ptr(new int);}auto_ptr<>其实是一个模板类;使用智能指针,就不用自己delete了,也能自行调用析构函数2. class A{ public : A(int a) { //... } func() { //... }}int main(void){ auto_ptr<A> ptr(new A(10)); ptr->func(); (*p...

C++笔记(十四)——this指针

问题描述: 在point类中定义了一个input函数。当input函数的形参为与成员函数的实参相同,都是m_x,m_y时,pt.input(10, 10);的运行结果为5,5。错误原因见下例:#include <iostream> using namespace std; class CPoint { public: ?? ?int m_x; ?? ?int m_y;??? ??? ?CPoint() ?? ??? ?{ ?? ??? ??? ?int m_x = 0; ?? ??? ??? ?int m_y = 0; ?? ??? ?}?? ??? ?CPoint(int a, int b) ?? ??? ?{ ?? ??? ??? ?m_x = a; ?? ???...

C++11智能指针和引用【代码】

最近在学习课程的时候发现一个很困惑的问题,上代码 class DataHeader;class LoginResult:public DataHeader;typedef std::shared_ptr<DataHeader> DataHeaerPtr; //原型 void addSendTask(ClientSocketPtr& pClient, DataHeaderPtr& header) //未报错调用 DataHeaderPtr ret = std::make_shared<LoginResult>(); pCellServer->addSendTask(pClient, ret); //报错调用 auto ret = std::make_shared<LoginResult>(); pCellServer->...

C++11之智能指针

1、关于智能指针的理解1)智能指针是使用RAII技术(资源的获取即初始化)对普通指针进行封装得到的,其实质是一个指针,使用起来像指针。2)智能指针可以用来解决程序员忘记使用delete释放内存从而导致内存泄漏,或者多次释放同一块内存,以及当程序出现异常时进入catch块中导致内存忘记释放。3)智能指针还可以将值语义转换成引用语义。 2、智能指针的使用(智能指针有三个:shared_ptr、unique_ptr、weak_ptr,放在头文件的memor...

c++——this指针【代码】【图】

实验1:若类成员函数的形参 和 类的属性,名字相同,通过this指针来解决。 实验2:类的成员函数可通过const修饰,请问const修饰的是谁 1 #include <iostream>2 using namespace std;3 class Test4 {5 public:6 Test(int a, int b) //---> Test(Test *this, int a, int b)7 {8 this->a = a;9 this-> b = b; 10 } 11 void printT() 12 { 13 cout<<"a: " <<a <<endl; 14 cou...

C++ 指针详解【代码】

指针的概念 指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。 先声明几个指针放着做例子: 例一: int *ptr; ?char *ptr; ?int **ptr; ?int (*ptr)[3]; ?int *(*ptr)[4]; 指针的类型 从语法的角度看,你只要把指针声明语句里的指针名字去...

C/C++:趣解指针、数组【图】

谈到C语言编程,数组和指针是很多人的心头大石,总觉得它们是重点难点,重点是没错的,但绝不是什么难点,要说C语言的难点,客观地讲应该是带参宏,而数组和指针,概念浅显易懂,操作简洁方便,根本不是很多初学者想象的那么困难,所以一开始就要有充分的信心,其次,恰恰是因为它们的“方便”,导致如果一不小心会用错,所以数组和指针,尤其是指针,与其说它难,还不是说他容易用错,我们在使用的时候要格外小心。 指针和数组,都...

C++笔记-数组指针/二维数组转换指针【代码】

参考资料: 1. 作者 BensonLaur :https://www.cnblogs.com/BensonLaur/p/6367077.html 2. https://blog.csdn.net/yyc1023/article/details/24441319 问题: 二维数组如何转换成指针 问题:cannot convert from double [10][10] to double ** 例如:double arry[5][10] = {0}; double** pp;pp=arry;直接的赋值会提示错误:cannot convert from double [10][10] to double ** 解决方法:double arry[5][10] = {0}; double ...

转:浅析C++中的this指针

原文出处:http://blog.csdn.net/starlee/article/details/2062586 有下面的一个简单的类: class CNullPointCall { public:static void Test1();void Test2();void Test3(int iTest);void Test4();private:static int m_iStatic;int m_iTest; };int CNullPointCall::m_iStatic = 0;void CNullPointCall::Test1() {cout << m_iStatic << endl; }void CNullPointCall::Test2() {cout << "Very Cool!" << endl; }void CNullPointCa...

C++练习 使用const关键字定义整型变量count,并定义指针p引用变量count

要求: 使用const关键字定义整型变量count,并定义指针p引用变量count。利用for循环打印count次Hello imooc #include<stdlib.h> #include <iostream>using namespace std;int main() {const int count = 5;int i;const int *p = &count;for (i = 1; i <= count; i++){cout << "Hello imooc" << endl;}system("pause");return 0;} const int count = 3; int *p = &count;为什么这样不行? count定义的是const类型的,说明count是不...

【C++】用指针做函数参数【图】

此篇博客程序运行环境为:VS2017!!! 函数的参数不仅可以是整型、浮点型、字符型等数据,还可以是指针类型。 它的作用是将一个变量的的地址传给被调用函数的形参。 e.g. 输入两个数,按由大到小顺序输出#include<iostream> using namespace std; int main() {void swap(int *p1, int *p2);int *p1, *p2, a, b;cin >> a >> b;p1 = &a;p2 = &b;if (a < b){swap(p1, p2);}cout <<"max="<< a << " min=" << b << endl;return 0; } vo...

c/c++中的函数指针和指针函数

定义 1.指针函数,本质是函数,返回值为指针,形如,int *pfun(int, int),由于“*”的优先级低于“()”的优先级,所以等同于int *(pfun(int, int)) 2.函数指针,本质是指针,返回一个函数,形如,int (*pfun)(int, int),括号强行将pfun首先与“*”结合,也就意味着,pfun是一个指针,接着与后面的“()”结合,说明该指针指向的是一个函数,然后再与前面的int结合,也就是说,该函数的返回值是int。由此可见,pfun是一个指向返回值为...

C++ 智能指针shared_ptr的实现

#include <memory> #include <iostream> using namespace std;template<typename T> class smart{ private:T* _ptr;int* _count; //reference counting public://构造函数smart(T* ptr = nullptr):_ptr(ptr){if (_ptr){_count = new int(1);}else{_count = new int(0);}}//拷贝构造smart(const smart& ptr){if (this != &ptr){this->_ptr = ptr._ptr;this->_count = ptr._count;(*this->_count)++;}}//重载operator=smart operator...

复习C++_指针【图】

注意:++i指的是先计算i+1,然后将其赋给i cout<<str[7]<<endl; //输出a