C++ Primer 指针
来源:互联网 发布:js将图片转换成base64 编辑:程序博客网 时间:2024/04/28 09:00
指针初始化和赋值操作的约束:
对指针进行初始化或赋值只能使用以下四种类型的值:、
(1)0值常量表达式,例如,在编译时可获取0值得整形const对象或字面值常量0。
(2)类型匹配的对象的地址。
(3)另一对象之后的下一地址。
(4)同类型的另一个有效指针。
把int类型变量赋给指针是非法的,尽管此int型变量可能为0,但允许把数值0或者在编译时获得0的值得const量赋给指针。
Int ival;
Int zero=0;
Const int c_ival=0;
Int *pi=ival; //error: pi initialized from int value of ival
Pi=zero; //error: pi assigned int value of zero
Pi=c_ival; //ok: c_ival is a const with compile-time value of 0
Pi=0; //ok: directly initialize to literal constant 0
Void *指针。C++提供了一种特殊的指针类型void *,它可以保存任意类型对象的地址。
Void *指针只支持几种有限的操作,与另一个指针进行比较,向函数传递void *指针,或从函数返回void *指针,给另一个void *指针赋值,不允许使用void *指针操作它所指向的对象。
C++允许计算数组或对象的超出末端的地址,但不允许对此地址进行解引用操作。而计算数组超出末端地址之后的数组首地址之前的地址都市不合法的。
指向函数的指针:
用typedef简化函数指针的定义
Typedef bool (*cmpFcn)(const string &, const string &);
该定义表示cmpFcn是一种指向函数的指针类型的名字。该指针的类型为“指向返回bool类型并且带有两个const string类型引用参数的函数的指针”。要使用这种函数指针时,只需要直接使用cmpFcn即可,不用每次都把整个类型的声明都全部写下来。
可使用函数名对函数指针做初始化或赋值。
cmpFcn pf1=0;
cmpFcn pf2=lengthCompare;
pf1=lengthCompare;
pf1=pf2;
直接引用函数名等效于在函数名上应用取地址操作符。
cmpFcn pf1=lengthCompare;
cmpFcn pf2=&lengthCompare;
函数指针只能通过同类型的函数或函数指针或0值常量表达式进行初始化或赋值。
指向不同类型的函数指针之间不存在转换。
如果指向函数的指针没有初始化,或者具有0值,则该指针不能再函数调用中使用。只有当指针已经初始化,或被赋值为指向某个函数,方能安全的用来调用函数。
- C++Primer--数组、指针
- c++primer 2/27----指针
- C++primer 指针学习笔记
- 关于指针(c++primer)
- C++Primer 数组和指针
- C++primer 指针(二)
- C++:C++primer plus 指针问题理解
- 指向函数的指针(摘自C++Primer
- 《C++Primer》 第四章 数组和指针
- C primer plus:指向函数的指针
- C++Primer 笔记 -- 指针和下标
- 指针和数组(c++primer)
- 《C++primer》读书笔记---数组和指针
- C++Primer学习概要:引用和指针
- c++Primer,四,数组和指针
- C++primer(六) 数组和指针
- C++primer 4.2 指针(上)
- C++Primer Plus 第十章-this指针
- Doing Enterprise Architecture- Benefits and Realizing Value
- virtio一个KVM虚拟环境下针对I/O虚拟化通用框架
- s3c2440为嘛能跳转到SDRAM里面去执行等相关问题
- org.apache.hadoop.hbase.MasterNotRunningException解决策略
- OCP-1Z0-051 补充题库 第11题 SQL和SQL*Plus的区别
- C++ Primer 指针
- VIM常用命令总结
- JavaScript权威指南第09章 类和模块
- csdn英雄会hero 题解之-3+1
- openCV 图像直方图
- Node.js 学习一
- 系统分析与设计——部署图画法
- JAVA String.format 方法使用介绍
- 黑马程序员-day05-面向对象(基本概念)