【1】C++11智能指针应用示例如下: 1 #include <iostream>2 #include <memory>3usingnamespace std;4 5void test_unique_ptr()6{7 unique_ptr<int> up1(newint(2020)); // 无法复制的unique_ptr8// unique_ptr<int> up2 = up1; // 不能通过编译 9 cout << (*up1) << endl; // 202010 unique_ptr<int> up3 = move(up1); // 现在up3是数据唯一的unique_ptr智能指针11 cout << (*up3)...
刚接触指针的时候,你很可能会觉得:数组和指针基本上是同一个东西。的确,数组和指针都可以用*取值,都可以加减某个数获得别的指针,都可以用[]来取值……例如下面的代码:int arr[5] = {2, 3, 5, 7, 9}; //定义一个数组,长度为5 int* arr_ptr = arr; //定义一个指针指向数组arrcout << "*arr = " << *arr << "\t*(arr + 3) = " << *(arr + 3) << "\t\tarr[3] = " << arr[3] << endl; cout << "*arr_ptr = " << *arr_ptr << "\t*...
1// 17-指针和数组.cpp: 定义控制台应用程序的入口点。2//3 4 #include "stdafx.h" 5 #include <iostream>6 #include <climits>7 8usingnamespace std;910int main() 11{ 12int a[]{345,65,23,7,2,856,23,83,176}; 13 cout << a << endl;//输出数组的时候也输出一串地址,输出的地址是数组的第一个元素的地址。在C++中数组也是指针。 14//如果数组a是指针,那么可以同个*a查看指针的值,应该就是345。15 cout << *a << en...
指针用起来是一把利器,但用得不好的童鞋 无异于 火上浇油 ,下面笔者将自己学习 的一点小小心得,与君共享 指针在类中1.对象指针 初始化Point a(4,5); Point *p1 = &a; 使用使用对象名访问成员函数 cout << a.getX() << endl; 使用对象指针访问成员函数 cout << p1->getX() << endl; 2.成员函数指针 初始化 int (Point::* funcptr)()=Point:: getX(); 使用 使用成员函数指针访问成员函数 cout << (a.*funcPtr)() << endl; ...
//this指针的作用#include"stdafx.h"#include<iostream>usingnamespace std;class CA{int a;public:CA(int i){ a = i; }void run(){ printf("CA run %d\n", a); }};//其中CA里面的run函数可以理解为如下代码、//void run(CA *const this)//{// printf("CA run\n");//}class CB :public CA{public:CB(int i) :CA(i){}void run(){printf("CB run\n");}};void findRun(CA & a) //没有定义成员变量呀 {a.run();}//调用int m...
5,数组指针的不同含义 int a[5][10]; printf(%d, %d, %d\n", a, a+1, &a+1); //1310392,1310432,1310592 a和&a都是数组a[5][10]的首地址。 a 是 int a[10]的类型,而 &a 则是 a[5][10]的类型。指针运算中的”1“代表的是指针类型的长度。所以 a + 1 和 &a + 1 中的1代表的长度分别为 a 的类型 a[10]即 sizeof(int)*10 和 &a 的类型 a[5][10]即 sizeof(int)* 10 * 5。所以 a首地址的输出为1310392,那么 a + 1 和 &a + 1的地址...
先不要看结果,看一下你是否真正了解了this指针? 1 #include<iostream>2usingnamespace std;3 4class Parent{5public:6int x;7 Parent *p;8public:9 Parent(){} 10 Parent(int x){ 11this->x=x; 12 p=this; 13 } 14virtualvoid f(){ 15 cout<<"Parent::f()"<<endl; 16 } 17void g(){ 18 cout<<"Parent::g()"<<endl; 19 } 2021void h(){ 22 ...
1int main(int argc, char* argv[]) 2{ 3int c=5; 4int *a=&c; 5int *b; 6 b=&c; 7return0; 8 }指针声明指针类型* 指针实例名*a 就是指针a所指地址上的数据a 就是该指针所指的地址&a 表示该指针的地址&c 表示取变量c的地址原文:http://www.cnblogs.com/xxdfly/p/4370968.html
第一篇、函数指针函数指针,表示的是一个指针,它指向的是一个函数,它含义是指指向函数的指针变量,在C编译时,每一个函数都有一个入口地址,那么这个指向这个函数的函数指针便指向这个地址。函数指针的用途是很大的,主要有两个作用:1、用作调用函数2、做函数的参数。函数指针的声明方法:数据类型标志符 (指针变量名) (形参列表);一般函数的声明为:int func ( int x ); 而一个函数指针的声明方法为:int (*func) (int x); ...
C++ DWORD 转byte char 数组、指针byte byteData[1024]; // byte数组,示例 DWORD dwData = dwReadBytes; // dword数据,示例 byteData[0] = (dwData & 0xFF000000) >> 24; // 最高位字节 byteData[1] = (dwData & 0x00FF0000) >> 16; // 第二高位字节 byteData[2] = (dwData & 0x0000FF00) >> 8; // 第三高位字节 byteData[3] = (dwData & 0x000000FF); // 第四字节 byte char 数组、指针 转 DWORDdwData = chr[0] | chr[1] << 8 ...
有这样一个类,我们以此类为基础: 1class Foo2{3public:4 5//void (Foo::*)(int) 6void foo(int a)7 {8 cout << a << endl;9 } 1011//void (*)(int)12staticvoid bar(int a) 13 { 14 cout << a << endl; 15 } 16 };我们尝试调用函数指针:void (*pFunc)(int) = &Foo::foo;得到编译错误:error: cannot convert ‘void (Foo::*)(int)’ to ‘void (*)(int)’ in initialization原因很简单,类成员函数,包...
空指针访问成员函数C++中空指针也是可以调用成员函数的,但是也要注意有没有用到this指针;如果用到this指针,需要加以判断保证代码的健壮性示例:#include <iostream> using namespace std;//空指针访问成员函数 class Person{ public:void ShowClassName(){cout<<"我是Person类!"<<endl;} void ShowPerson(){if(this==NULL){return;}cout<<this->mAge<<endl;} public:int mAge; };void test01() {Person *p=NULL;p->ShowCla...
C++中指针是一个很让人头疼的东西,指针指向这儿指向那儿很容易把人搞晕了。指针实现了对象的间接访问,指针本身也是对象这点和引用不同,引用仅仅是对象的别名。指针可以在其生命周期内指向不同的对象(当然除了指针常量),另外指针无需在定义时赋值,指针也可以为空指针或者无效指针。常用的定义方法如下:int a=10;Int *b=&a;//运用取地址运算符 注意:引用不是对象,没有实际的地址,所以没有指向引用的指针! 指针的值类型:...
#include <iostream> usingnamespace std;class Point { public:Point(int x = 0, int y = 0) : x(x), y(y) {count++;} Point(const Point &p) : x(p.x), y(p.y) {count++;}~Point() { count--; }int getX() const { return x; }int getY() const { return y; }staticint count;private:int x, y; };int Point::count = 0;int main() {int *ptr = &Point::count;Point a(4, 5);cout << "Point A: " << a.getX() << ", " << a.g...
数组指针是指一个指向数组的指针,例如有一个数组指针p指向一个数组a[],则 *p是取到这个数组,也就是说 *p=a,因此 **p =a[0],它的定义为:int a[10]; int (*c)[10]=&a;(*c)表示它是一个指针,若不加括号则变成 指针数组 ,[10]表示指向一个长度为10的数组,int 表示数组元素为int因为函数不能返回数组,所以可以设置返回一个数组指针,即auto fo2(int (&a)[10]) -> int (*)[10]{a[5]=10;return &a; }int (&a)[10] 是一个数组引用...