arrayPointer
1,分别使用指针加减
int wages[2] = {100000000,20000000};
int *pw = wages or int *pw = &wages[0] 表示指针指向数组的首地址;
pw表示地址,*pw表示取值,new分配的动态数组时 指针名称当数组名称使用eg pw[0],pw[2]分别表示指向数组wages的2个数组的元素值;
我们已知pw表示此指针所指向的数组的首地址元素在内存中的地址,pw + 1则表示指针的指向从指向数组的首地址转义到数组的第二个元素;
此时经过pw = pw + 1后 pw表示的就是此指针所指向数组的第二个地址了,*pw取到的值就是数组的第二个值了;
在常规变量指针变量场合中取数组的值可以用数组名下标,也可以使用*指针名来取值;
但是在new动态数组中只能通过指针名
pw[0] or pw[1];
同时在常规变量中数组位置也是可以的*wages;
数组名解析为数组的首地址
指针默认都是指向数组的首地址,可以定义指针指向数组的位置
eg int *pw = &wages[1] or &wages[2];
wages = &wages[0] //first address elements;
注,将指针变量+ 1后,其增加的值等于指向的类型占用的字节数;
wages[0] Pk *wages;
wages[1] Pk *(wages + 1);arrayName[i] becomes *(arrayName + i);
pointerName[i] becomes *(pointerName + i)
数组名,指针名 都可以表示数组地址,但指针名值可改变,数组名值及所代表的地址值不可变更,--数组名 常量;
pointerName = pointerName + 1执行下一个数组的元素内存地址;
arrayName = arrayName + 1; //not allow;
->用于指针结构体中;
pw 指针变量 加减,移动指针所指的数组元素位置;
数组名通常被解析为数组的首地址,但请注意,当对数组名应用地址运算符时,得到的是整个数组的地址
但是又请注意了,数组名 = 数组的首地址 = 整个数组的地址;
但又请您注意了,tell &tell内存地址值一样,但在内存中所占存储空间是不一样的
变量类型(类型占内存字节大小)
这个你应该懂的!移动整个 数据块单元;
处理new数组,把指针当数组名对待;
double * pn; pn是指针,double *是指向pn的指针;
指针存储的内存的地址,对变量名应用&运算符,来获得被命名的内存的地址,new运算符返回未命名的内存的地址;
double * pn // pn can point to a double value
double * pa; //so can
char * pc; //pc can point to a char value
double bubble = 3.2;
pn = &bubble;//assign address of bubble to pn
pc = new char; //assign address of newly allocated char memory to
pa = new double[30] //
指针解除引用
对指针解除引用 意味着获取指针指向的值(*pw),对指针应用解除引用或间接值运算符(*)来解除引用;
指针解除引用的另一种方法就是使用数组表示法 pn[0] *pn
绝不要对未被初始化为适当地址的指针解除引用;
指针算术(pw = pw + 1,值移动单位长度的指针指向跨度,此跨度是指指针所指向的数据类型所占内存的字节数)
指针和整数相加减
原来的地址值加上指向的对象占用的总字节数 但2个指针指向同一个数组时,指针间也是可以加减的;
int tacos[10] = {5,2,8,4,1,2,2,4,6,8};
int * pt = tacos; //suppose pt and taos are the address 3000
pt = pt + 1;
int * pe = &tacos[9]; // pe os
pe = pe - 1;
int diff = pe - pt;
数组的动态联编(dynatic build)和静态联编(static build)
使用数组申明来创建数组,将采用静态联编,数组 的长度编译是设置
new[]运算符创建数组,采用动态联编,即程序运行时为数组分配存储空间,设定元素个数;
但当使用完 new[]申明生成的数组后,需用delete [] typeName删除,不然造成内存泄露
(指操作过后不经过特定手法无法恢复);
int size;
cin>>size;
const int size = 10;
int * pz = new int [size]; //dynamic binding,size set at run time
delete [] pz; //free memory when finshed;
数组表示法和指针表示法
方括号数组表示法等同于对指针解除引用;
tacos[0] means *tacos the value at address tacos
tacos[3] means *(tacos + 3) 等价于 tacoks = tacos + 3; //means the value at address tacos + 3
int * pt = new int [10];//pt points to block of 10 ints
*pt = 5; //set element number 0 to 5
pt[0] = 6;//reset element number 0 to 6
pt[9] = 44; //set tenth element (element number 9) to 44
int coats[10];
*(coats + 4) = 12; //set coats[4] to 12 相当于设置数组的第四个元素值
*ArrayName;
*PointerName;
*(ArrayName + n) 移动到相应的元素处;
数组初始化 整数 or 字符串
可以{} or ""但是仅仅用于字符串
{} 仅仅只可以用到数字上
数据类型 ,变量 占内字节数
strlen 字符串变量的长度
strlen(pw);
arrayPointer相关推荐
- C++_泛型编程与标准库(七)
C++_泛型编程与标准库(七) 参考:<侯捷泛化编程与标准库>.VC2019 图中标红部分为自己的笔记理解 1.深度探索vector 笔者觉得在最新的VC2019下不是二倍增长,虽然是几何 ...
- 从n返回k个元素的所有组合的算法
我想编写一个函数,该函数采用字母数组作为参数,并选择多个字母. 假设您提供8个字母的数组,并希望从中选择3个字母. 然后您将获得: 8! / ((8 - 3)! * 3!) = 56 返回由3个字母组 ...
- c++ vector 存放指针_STL-C++ vector部分
本文是关于c++中STL库中的一些记录,主要是因为之前在网上找到关于STL的资料太过简洁,并且只停留在如何使用函数,对于底层具体实现较少,所以想自己对这些知识记录一下,当然我目前对STL库了解也不深入 ...
- C++ vector的内部实现原理及基本用法
本文基于STL vector源代码,但是不考虑分配器allocator,迭代器iterator,异常处理try/catch等内容,同时对_Ucopy(). _Umove(). _Ufill()函数也不 ...
- 【C 语言】数组 ( 数组指针 | 数组指针定义 | 直接定义 数组指针 )
文章目录 总结 一.直接定义 数组指针 二.完整代码示例 总结 int (*p)[3] = NULL; 一.直接定义 数组指针 直接定义 数组指针 , 首先 , 定义一个普通数组 , 之后的 数组指针 ...
- Qt文档阅读笔记-QScopedPointer解析及实例
当指针超出范围后就会删除被引用的对象. 与QPointer不同,他可以在任意类型中使用(QPointer只能在identity type中使用) 4个不同的清除类 1. QScoped ...
- Android java传递int类型数组给C
接着前面的文章<Android java传递int类型数据给C><Android java传递string类型数据给C>,继续实践 实现public native int[] ...
- C语言深度剖析笔记2
接上半部分 C语言深度剖析笔记1 https://blog.csdn.net/halazi100/article/details/125844487 C语言深度剖析笔记1 指针 变量回顾 既然程序中的 ...
- C语言——经典200道实例【基础例题100道——进阶例题100道】
目录: ===============================基础例题100道=============================== 1.输出 "Hello, World!& ...
最新文章
- 太生猛!AI应届生年薪涨到80万!网友:后悔生的太早
- QIIME 2用户文档. 17序列双端合并read-joining(2018.11)
- 9path 导致的一场冤假错案
- pytorch处理多维输入的问题
- arduino代码_arduino智能小车项目——01、配件介绍及代码部分教程
- 莫比乌斯带catia建模_独家教程 | 循环曲面“莫比乌斯”,康石石教你Rhino“3步”快速打造...
- 《新一代人工智能发展白皮书(2017年)》重磅发布(100页完整版PPT)
- 宁波海曙区服务器维修,宁波市海曙区第二医院关于服务器(备份一体机) 1套的在线询价公告...
- 技术在于精,其次在于多
- Linux命令解释之fdisk
- web安全day47:口令、字典、crunch、cupp、hydra、MSF-psexec_psh的使用
- 只能选择GridView中的一个CheckBox(单选CheckBox)
- 电动车的蓄电池与锂电池
- 面试前hr加了微信,面试后是否可以向hr询问面试结果?
- 报表工具能实现怎么的导出效果?
- 2.1.1 理论模型
- 161张Menhera酱表情包 无水印汉化版
- 软件测试实战教程系列—接口测试用例和报告模板|收藏版
- java如何绑核_pod绑核规则
- 鸿蒙os2.0手机app开发,华为发布鸿蒙OS2.0手机开发者Beta版