c++11 指针空值】的更多相关文章

1. 引入nullptr的必要性: 典型的指针初始化是将其指向一个空的位置.比如: int* my_ptr = 0; int* my_ptr = NULL; 一般情况下,NULL是一个宏定义. #undef NULL #if defined(__cplusplus) #define NULL 0 #else #define NULL ((void*)0) #endif NULL可能被定义为字面常量0,或定义为无类型指针(void*)常量. 一下代码显示了使用NULL引起的意外的行为: #incl…
c++11 智能指针 unique_ptr.shared_ptr与weak_ptr C++11中有unique_ptr.shared_ptr与weak_ptr等智能指针(smart pointer),定义在<memory>中. 可以对动态资源进行管理,保证任何情况下,已构造的对象最终会销毁,即它的析构函数最终会被调用. unique_ptr unique_ptr持有对对象的独有权,同一时刻只能有一个unique_ptr指向给定对象(通过禁止拷贝语义.只有移动语义来实现). unique_ptr…
__func__宏 __func__返回当前的函数名,也可以返回class和struct名. /*返回函数名hello*/ const char* hello() { return __func__; } /*返回结构体名foo*/ struct foo { foo():name(__func){} const char* name; } __VA_ARGS__宏 可变参数宏 #define INFO(...) printf(__VA_ARGS) noexcept noexcept操作会阻止异常…
[深入理解C++11[5]] 1.原子操作与C++11原子类型 C++98 中的原子操作.mutex.pthread: #include<pthread.h> #include <iostream> using namespace std; ; pthread_mutex_t m = PHTREAD_MUTEX_INITIALIZER; void* func(void*){ long long i; ;i < 100000000LL; i++){ pthread_mutex_…
<深入理解C++11:C++11新特性解析与应用> <华章科技:深入理解C++11:C++11新特性解析与应用>一共8章:第1章从设计思维和应用范畴两个维度对C++11新标准中的所有特性进行了分类,呈现了C++11新特性的原貌:第2章讲解了在保证与C语言和旧版C++标准充分兼容的原则下增加的一些新特性:第3章讲解了具有广泛可用性.能与其他已有的或者新增的特性结合起来使用的.具有普适性的一些新特性:第4章讲解了C++11新标准对原有一些语言特性的改进,这些特性不仅能让C++变得更强大…
一.shared_ptr学习 1.shared_ptr和weak_ptr 基础概念 shared_ptr与weak_ptr智能指针均是C++ RAII的一种应用,可用于动态资源管理 shared_ptr基于“引用计数”模型实现,多个shared_ptr可指向同一个动态对象,并维护了一个共享的引用计数器,记录了引用同一对象的shared_ptr实例的数量.当最后一个指向动态对象的shared_ptr销毁时,会自动销毁其所指对象(通过delete操作符). shared_ptr的默认能力是管理动态内…
0.可变数量参数,可变函数模版,变长模版类 c++98可变数量参数 #include<cstdio> #include<cstdarg> double SumOfFloat(int count, ...) { va_list ap; ; va_start(ap,count); ;i<count;i++) sum+=va_arg(ap,double); va_end(ap); return sum; } int main() { printf(,1.2f,3.4,5.6));…
百度云及其他网盘下载地址:点我 编辑推荐 <深入理解C++11:C++11新特性解析与应用>编辑推荐:C++标准委员会成员和IBM XL编译器中国开发团队共同撰写,权威性毋庸置疑.系统.深入.详尽地讲解了C++11新标准中的新语言特性.新标准库特性.对原有特性的改进,以及所有这些新特性的应用. 作者简介 作者:(加拿大)Michael Wong IBM XL编译器中国开发团队 Michael Wong,C++11标准委员会(WG21)委员,WG21加拿大代表团团长及IBM公司代表(投票人),W…
目录 一.地址和指针 1.1内存 1.2针和指针变量 二.指针变量 2.1始化 2.2赋值 2.3指针类型算术运算 2.4指针类型关系运算 2.5指向指针的指针 三.指针与数组 3.1指针运算 3.2通过指针访问数组元素 3.3指针数组 四.指针与字符串 4.1字符串的表示形式 4.2字符指针作函数参数 4.3字符指针变量与字符数组 五.指针与函数 5.1语法形式 5.2使用 5.3指针做函数参数 5.4返回指针的函数 5.5指向函数的指针 一.地址和指针 1.1内存 内存由一系列连续的存储单元…
指针篇 1.基本指针变量 (1)定义 int i,j; int *pointer_1,*pointer_2; pointer_1 = &i; pointer_2 = &j; 等价于 int *pointer_1 = &i,*pointer_2 = &j; (指针误区: 大家首先应该知道,地址可称为指针,是不可变的:指针变量(上述定义的pointer_1为指针变量)是变量,变量是可变的,和通常的变量相比,它存放的量CPU会当地址来处理) -------------------…
一.本次课主要内容: 本章主要介绍指针相关的基础知识,本节课的主要如下 (1)通过示例"密码开锁"引入指针的概念和主要知识点,分析了密码开锁的过程来说明变量.内存单元和地址之间的关系,从而引入指针的基本概念,接着介绍了指针的基本运算以及指针变量的初始化. (2)通过例子"角色互换"引入指针作为函数参数的用途和用法,区分按值调用和引用调用,分析了3个swap()函数进行对比,最后通过给定的年和天数计算是某年某月某日的实例学习了如何使用指针作为函数参数返回多个值,解决了…
整理一下c++中shared_ptr,weak_ptr,unique_ptr三种指针的使用案例和注意事项,让程序资源更加案例,在标准库中,需要包含<memory>,在boost库中, 一. 智能指针unique_ptr 与shared_ptr相似,区别在于unique_ptr是独立拥有对象权,因此只有move语言,无拷贝语义,不做其它详述了. 二.智能指针share_ptr 1.基本使用 class Sam { public: Sam(int v):val(v) { } int32_t val…
指针和引用的异同点总结 异同点 指针 引用 1 指针是一个变量,本身是一个实体,指针中的内容是一个地址值 该值指向内存中的一个存储单元 引用只是一个别名,实质上指向同一对象 系统不为引用分配内存 2 指针可以为空,声明定义时可以不进行初始化 引用不可以为空,声明定义是必须绑定到一个变量上 3 非const指针在初始化后可以重新指向不同的对象,指向其他存储单元 引用与被引用对象一旦绑定就不能再更改 4 指针可以由多级,指向指针的指针,指向指向指针的指针的指针等 引用只能有一级,因为不是一个实体,不…
1.指针(变量的地址): 指针变量:存放指针(地址)的变量 直接存取(访问):按变量地址取值 间接存取(访问):将变量的地址放入指针变量中 定义指针变量:基类型 *指针变量名 2.与指针有关的运算符: &:取地址运算符 *:指针运算符(间接访问运算符): int *pointer_1,*pointer_2; int a = 1, b = 2; pointer_1 = &a; pointer_2 = &b; pointer_2 = &*pointer_1;//*,&优…
http://c.biancheng.net/view/2022.html 1. 区分指针数组和数组指针 指针数组:存放指针的数组,如 int *pstr[5] = NULL; 数组中每个元素存放的是一个  int *  类型的指针 数组指针: 存放的是数组(数组名即为指针)如 int a[3][4] = {{0}};  int (*p) [4] =a; 括号中的*表明 p 是一个指针,它指向一个数组,数组的类型为int [4],这正是 a 所包含的每个一维数组的类型. C语言允许把一个二维数组…
1.nullprt与NULL 代码: void f(int i) {    cout << "f(int)" << endl;} void f(char* c) {    cout << "f(char*)" << endl;}int main () { f(); f('\0'); // f(NULL); 在我的GCC中编译不过,因为NULL被认为是(void*)0,二义性 // f((void*)0); 二义性 f(…
if (CGRectContainsPoint(self.menuView.frame, point)) { point =  [self.view convertPoint:point toView:self.menuView]; selectedView = [[self.itemViews filteredArrayUsingPredicate:[NSPredicate predicateWithBlock:^BOOL(RNMenuItemView *itemView, NSDiction…
/*********************************************************** 关于书: 书是我从网上找到的effective Modern C++的样章,内容只到条款4就没有了, 所以现阶段我只能翻译到条款4,不过以后有机会我会继续翻译的. 如果读者找到了完整的版本,欢迎大家发给我.1021842556@qq.com effective Modern C++的样章的下载地址http://pan.baidu.com/s/1ntKBlpf 提取密码是upk…
iOS面试指导 一 经过本人最近的面试和对面试资料的一些汇总,准备记录这些面试题,以便ios开发工程师找工作复习之用,本人希望有面试经验的同学能和我同时完成这个模块,先出面试题,然后会放出答案. 1. 你使用过Objective-C的运行时编程(Runtime Programming)么?如果使用过,你用它做了什么?你还能记得你所使用的相关的头文件或者某些方法的名称吗? 答案:Objecitve-C的重要特性是Runtime(运行时),在#import <objc/runtime.h> 下能看…
一 .C++入门 1.C++关键字 2.命名空间 3.C++输入&输出 4.缺省参数 5.函数重载 6.引用 7.内联函数 8.auto关键字 9.基于范围的for循环 10.指针空值nullptr&nullptr_t 二. 正文 1.C++关键字(C++98) C++98中的关键字总共用63个,如下表: 在这这做简单介绍,感兴趣的朋友可以参考相关资料作进一步了解. 2.命名空间 由于在编写程序的过程中,很容易出现变量.函数和类重名的现象,这些变量.函数和类都在全局作用域中,因此会导致很多…
在C++中.动态内存分配是一把双刃剑,一方面,直接訪问内存地址提高了应用程序的性能,与使用内存的灵活性.还有一方面.因为程序没有正确地分配与释放造成的比如野指针,反复释放,内存泄漏等问题又严重影响着应用程序的稳定性. 人们尝试着不同的方案去避免这个问题,比較经常使用的如智能指针,自己主动垃圾回收等,这些要么影响了应用程序的性能.要么仍然须要依赖于开发人员注意一些规则,要么给开发人员带来了另外一些非常丑陋的使用方法(实际上笔者非常不喜欢智能指针).因此,优秀的C++内存管理方案须要兼顾性能.易用性…
一:引用 概念:是给一个已经存在的变量取一个别名,编译器不会为引用变量开辟内存空间,它和引用的变量公用一块内存空间. 例如: 类型& 引用变量名(对象名)= 引用实体 int& a = b; 引用类型必须和引用实体是同种类型的. 特性: 1. 引用在定义时必须初始化 2. 一个变量可以有多个引用 3. 引用一旦引用一个实体,再不能引用其他实体 引用适用场景: 1.做参数 void Swap(int& left, int& right) 2.做返回值 int& Tes…
上一节学习了C++的函数:c++:-2,本节学习C++的数组.指针和字符串 数组 定义和初始化 定义 例如:int a[10]; 表示a为整型数组,有10个元素:a[0]...a[9] 例如: int a[5][3]; 表示a为整型二维数组,其中第一维有5个下标(04),第二维有3个下标(02),数组的元素个数为15,可以用于存放5行3列的整型数据表格. 使用 必须先声明,后使用. 只能逐个引用数组元素,而不能一次引用整个数组 例如:a[0]=a[5]+a[7]-a[2*3] 例如:b[1][2…
原文出处: 朱小厮 1. Spring框架的作用 轻量:Spring是轻量级的,基本的版本大小为2MB 控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们. 面向切面的编程AOP:Spring支持面向切面的编程,并且把应用业务逻辑和系统服务分开. 容器:Spring包含并管理应用中对象的生命周期和配置 MVC框架: Spring-MVC 事务管理:Spring提供一个持续的事务管理接口,可以扩展到上至本地事务下至全局事务JTA 异常处理:Spri…
 id id是指向Objective-C对象的指针,等价于C语言中的void*,可以映射任何对象指针指向他,或者映射它指向其他的对象.常见的id类型就是类的delegate属性. SEL SEL类型是Objective-C用来定义方法的关键字,但却从不属于任何类实例,其值是通过@selector进行计算,可以把她当做一个函数指针来使用,但实际上的类型是const char*.SEL类系可以在编译时通过@selector()直接创建,也可以用NSSelectorFromString()函数创建,这…
1.创建数据文件: [oracle@host03 ~]$ vi base_data.dat ,zhangfei,zhangyide ,guanyu,guanyunchang ,liubei,liuxuande ,zhugeliang, 2.创建控制文件: [oracle@host03 ~]$ vi base.ctl load data infile 'base_data.dat' into table s1_base truncate fields terminated by ',' (id,f…
本文由我们团队的 康祖彬 童鞋撰写,这是他的个人主页:https://kangzubin.cn. 理解"不存在"的概念不仅仅是一个哲学的问题,也是一个实际的问题.我们是有形宇宙的居民,而原因在于逻辑宇宙的存在不确定性.作为一个逻辑系统的物理体现,计算机面临一个棘手的问题,就是如何用"存在"表达"不存在".--摘自 NSHipster 这段话读起来怪怪的,毕竟是翻译过来的,大概意思是说在计算机中如何描述"不存在"这个概念很重要.…
ObjC 里面的几个空值符号经常会差点把我搞死,这些基础的东西一点要弄清楚才行,以提高码农的基本素质. nil nil 是 ObjC 对象的字面空值,对应 id 类型的对象,或者使用 @interface 声明的 ObjC 对象.例如: NSString *someString = nil; NSURL *someURL = nil; id someObject = nil; if (anotherObject == nil) // do something 定义: // objc.h #ifn…
1 static(静态)变量有什么作用 3个体明显的作用:1)在函数体内,静态变量具有“记忆”功能,即一个被声明为静态变量在一个函数被调用的过程中其值维持不变2)在模块内,它的作用域范围是有限制的,即如果一个变量被声明为静态的,那么该变量可以被模块内所有函数访问,但不能被模块外其他函数访问.3)内部函数应该在当前源文件中说明和定义,对于可在当前源文件以外使用的函数,应该在一个头文件中说明,使用这些函数的源文件要包含这个头文件. 与局部变量和全局变量的区别:static全局变量和普通全局变量相比的…
卷 backup 的文件夹 PATH 列表卷序列号为 00000025 D4A8:14B0J:.│  1.txt│  c语言经典案例效果图示.doc│  ├─1传智播客_尹成_C语言从菜鸟到高手_第一章C语言概述A│  ├─文档│  │      第1讲 C语言第一阶段.doc│  │      │  └─视频│          第1讲 C语言第一阶段.mp4│          ├─2传智播客_尹成_C语言从菜鸟到高手_第二章C语言跨平台HelloWorld-A│  ├─2.1 C语言环境简…