C++ 指针 技术教程文章

C++之指针

这里写目录标题 指针指针的大小空指针通过指针修改const指针运算指针运算数组指针指针 指针的大小 取决于编译器位数,如果是X86是32,如果是X64是64; 没有赋值的指针成为野指针,所以指针所指向的变量一般需要进行初始化,不然的话,指针指向的位置有可能是系统地址的部分。Void *p =NULL;取地址是在寄存器中,不占内存;所谓的地址实际是计算机总线,作为一个常量,不占内存;但是指针如果作为一个变量存在,是消耗内存的,比如*...

C++中野指针

我一直在思考在求职面试中,我们是否要回答得很前面才能让面试官满意,或者说见人说人话,见鬼说鬼话,可以不回复得很全面,但是回答到让人舒服,顺便吹一下好话。有时候,坐在你对面的面试官水平都未必比你好的,如果你回答的非常具体细致或者深入,那么我觉得达到的效果可能不是那么好。面试官会认为你在装逼。 C++中的野指针,指针问题是每个程序员止步的重要门槛,初学者会认为指针问题难以理解,我当初也是如此。甚至...

C++ 智能指针【代码】【图】

转载!原作者介绍的太完整了,转载完全为了给自己做个笔记,侵权删 https://www.cnblogs.com/wxquare/p/4759020.html 目录理解智能指针的原理智能指针的使用智能指针的设计和实现 1.智能指针的作用 C++程序设计中使用堆内存是非常频繁的操作,堆内存的申请和释放都由程序员自己管理。程序员自己管理堆内存可以提高了程序的效率,但是整体来说堆内存的管理是麻烦的,C++11中引入了智能指针的概念,方便管理堆内存。使用普...

C/C++编程笔记:什么是不透明指针?一文带你明白!【图】

什么是不透明指针? 顾名思义,不透明是我们看不到的。例如,木材是不透明的。不透明指针是指向数据结构的指针,该数据结构的内容在定义之时不公开。 跟随指针是不透明的。通过查看定义,无法知道STest结构中包含的数据。struct STest * pSTest;将NULL分配给不透明的指针是安全的。pSTest = NULL;为什么不透明的指针? 在某些地方,我们只想提示编译器“嘿!这是我们的客户将使用的某些数据结构。不用担心,客户将在准备编译单元时...

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

this指针,在成员函数中使用,指代的是当前对象 #include <iostream>using namespace std;class Box {public:// 构造函数定义//默认初始值,定义时没有赋值的情况下使用 Box(double l=2.0, double b=2.0, double h=2.0){cout <<"Constructor called." << endl;length = l;breadth = b;height = h;}void out(void){//成员函数函数中可直接使用这些变量 cout << length << endl;cout << breadth << endl;cout << height;} double Vol...

C++字符串数组中小写转大写的写法(指针)【代码】

大写字母好看 任务描述 本关任务:将一个字符串中的所有小写字母变成对应的大写字母,其它字母不变。 例如:对字符串“abc12! ef”执行函数后输出结果为“ABC12! EF” 测试说明: 测试输入:1q2w3ASD45sx~1 预期输出:1Q2W3ASD45SX~1 测试输入:as 12xfASA90[]kl{} 预期输出:AS 12XFASA90[]KL{} #include <iostream> using namespace std;void toUp(char* str);int main() {char s[1024];cin.getline(s, 1024); // 输入一行字符...

c++this指针【代码】

每一个非静态成员函数只会诞生一份函数实例,也就是说多个同类型的对象会共用一块代码 那么问题是:这一块代码是如何区分哪个对象调用自己的呢? c++通过提供特殊的对象指针,this指针,来解决上面的问题,this指针指向被调用的成员函数所属的对象 this指针是隐含每一个非静态成员函数内的一种指针 this指针不需要定义,直接使用即可 this指针的用途 当形参和成员变量同名时,可用this指针区分在类的非静态成员函数中返回对象本身,...

9.6 C++指向结构体变量的指针【图】

原创 闫小林 c语言入门到精通 1月1日收录于话题#C++代码基础95个点击上方“C语言入门到精通”,选择置顶第一时间关注程序猿身边的故事作者闫小林白天搬砖,晚上做梦。我有故事,你有酒么?C++结构体变量和指向结构体变量的指针构成链表 链表有一个头指针变量,以head表示,它存放一个地址,该地址指向一个元素。链表中的每一个元素称为结点,每个结点都应包括两个部分: 用户需要用的实际数据下一个结点的地址。经典案例:C++使用...

【C++笔记】对象模型和this指针【代码】

一、成员变量和成员函数分开存储 C++中,类内的成员变量和成员函数分开存储,只有非静态成员变量才属于类的对象空对象也会占用内存 C++编译器会给每个空对象也分配一个字节空间,是为了标志此对象占内存的位置。每个空对象也应该有一个独一无二的内存地址class Person{};cout << "size of p = " << sizeof(p) << endl;空对象占用1个字节内存只有类的非静态成员变量,属于类的对象class Person{int m_A; };cout << "size of p = " <...

c++指针学习

指针变量与其余变量的一个区别: int *i 能通过*来访问该指针,并能改变该指针所指对象的值 如int *i=&p ;cout<<*i; *i=1; 而对于其余变量如int i 不能使用*来访问 即使i存的值为一个地址 而对这种变量可使用&来获得地址 如int p=100;int *i=&p;此时i的本身的值为p的地址,而*i为p的值为100 *i=90 等同于 p=90 但如果指针指向常量 则声明该指针时的也要把它申明为指向常量的指针 如const int *p;他指向的值也为一个常量如const in...

C++智能指针(精简介绍)

前言 C++里面的四个智能指针: auto_ptr, unique_ptr,shared_ptr, weak_ptr 其中后三个是C++11支持,并且第一个已经被C++11弃用。这里只简单介绍后三种。 看完这篇精简介绍后可以去看详细介绍,C++智能指针(详细介绍) C++11智能指针介绍 智能指针主要用于管理在堆上分配的内存,它将普通的指针封装为一个栈对象。当栈对象的生存周期结束后,会在析构函数中释放掉申请的内存,从而防止内存泄漏。 C++ 11中最常用的智能指针类型为sh...

c++ const 与 指针的小实验【代码】

指向常量的指针 有各种类型的指针,int *,char * 虽然类型不同,但它们的大小都是相同的(64位 8字节,32位4字节) 而指向常量的指针,因为其指针类型是常量,随意不能通过指针改变值 上代码#include <iostream>using namespace std;int main() {int age = 12;const int *p = &age;(*p) = 13;return 0; }使用g++编译g++ const.cpp const.cpp: In function ‘int main()’: const.cpp:10:7: error: assignment of read-only locat...

【C/C++】指针【代码】【图】

(资料来源:https://www.bilibili.com/video/BV1QE41147RT?p=101) 指针:内存地址,用于间接访问内存单元 指针变量:用于存放地址的变量 static int i ; static int* ptr = &i ;指针变量的赋值运算 语法形式:指针名 = 地址 (在该地址中存放的数据类型与指针类型必须相符) 地址可以是:通过取地址符&取得已定义的变量的起始地址动态内存分配成功时返回的地址整数零,0可以赋给指针,表示空指针,NULL就是被定义为0(C++11中可以...

PAT甲级1085 Perfect Sequence :[C++题解]双指针【代码】【图】

文章目录 题目分析题目来源题目分析来源:acwing 分析:求满足条件M≤mpM \leq m\times pM≤mp的区间[m, M]最长是多少。此处有一性质:当最大值M变大的时候,最小值m也是变大的, 它不可能变小。根据这个性质便可以是使用双指针算法:先从小到大枚举最大值M,然后最小值m也是单调增加的。 ac代码 #include<bits/stdc++.h> using namespace std; const int N = 1e5+10; typedef long long LL; int n ,p; int a[N];int main(){cin >>...

C++指针的算术运算 、关系运算【图】

下面随笔是关于指针的算术运算 、关系运算。指针类型的算术运算指针与整数的加减运算指针++,--运算指针类型的算术运算指针p加上或减去n其意义是指针当前指向位置的前方或后方第n个数据的起始位置。指针的++、--运算意义是指向下一个或前一个完整数据的起始。运算的结果值取决于指针指向的数据类型,总是指向一个完整数据的起始位置。当指针指向连续存储的同类型数据时,指针与整数的加减运和自增自减算才有意义。指针与整数相加的...

C++指针笔记【代码】【图】

下面随笔给出C++指针笔记。内存空间的访问方式通过变量名访问通过地址访问指针的概念指针:内存地址,用于间接访问内存单元指针变量:用于存放地址的变量指针变量的定义例:static int i;static int* ptr = &i;例:*ptr = 3;与地址相关的运算——“*”和“&”指针运算符地址运算符:&指针变量的初始化语法形式存储类型 数据类型 *指针名=初始地址;例:int *pa = &a;注意事项用变量地址作为初值时,该变量必须在指针初始化之前已声...

PAT甲级1112 Stucked Keyboard:[C++题解]卡住的键盘、双指针、去重【代码】【图】

文章目录 题目分析题目来源题目分析来源:acwing 分析 双指针算法来统计连续出现的字符的次数,如果 %k 不为0说明不是卡住的字母,做好标记。 再次遍历字符串,坏的输出,顺便统计正常的字符串是啥。 AC代码 #include<bits/stdc++.h> using namespace std;const int N = 200; //需要用到小写字母的ASCII码值 int st[N]; int main(){int k;cin >> k;string s;cin >> s;//双指针for(int i =0; i<s.size();i++){int j = i + 1;while...

C++ 中的智能指针-基础【代码】

简介 在现代 C++ 编程中,标准库包含了智能指针(Smart pointers)。 智能指针用来确保程序不会出现内存和资源的泄漏,并且是"异常安全"(exception-safe)的。 智能指针的使用 智能指针定义在头文件 memory 里的命名空间 std 中。它对于资源获取即初始化(RAII, Resource Acquisition Is Initialization) 编程理念至关重要。该理念的目的是保证对象初始化的时候也是资源获取的时候,从而使对象的所有资源在单行代码中创建。 实践中,RA...

C++中引用与指针的关系

1.推荐使用引用 2.引用和指针的联系:关于引用的性质,如果在程序中声明了b是变量a的引用,实际上在内存中为b开辟了一个指针型的存储单元,在其中存放变量a的地址,输出引用b时,就输出b所指向的变量a的值,相当于输出*b。引用其实就是一个指针常量,他的指向不能改变,只能指向一个指定的变量。所以,引用的本质还是指针,所有引用的功能都可以由指针实现。C++之所以增加引用的机制,是为了方便用户,用户可以不必具体去处理地址...

C++系列(2)—智能指针【代码】

智能指针 智能指针是代理模式的具体应用,它使用 RAII 技术代理了裸指针,能够自动释放内存,无需程序员干预,所以被称为“智能指针” unique_ptr 理解含义实际上并不是指针,而是一个对象。所以,不要企图对它调用 delete,它会自动管理初始化时的指针,在离开作用域时析构释放内存。 它也没有定义加减运算,不能随意移动指针地址,这就完全避免了指针越界等危险操作,可以让代码更安全 表示指针的所有权是“唯一”的,不允许共享...