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的更多相关文章

  1. Android 在C代码中调用logcat

    本文给<Android java传递int类型数组给C>中添加C代码中调用logcat的功能 Android.mk文件增加以下内容 LOCAL_LDLIBS += -llog C代码中增加 ...

  2. Android java传递int类型数组给C

    接着前面的文章<Android java传递int类型数据给C><Android java传递string类型数据给C>,继续实践 实现public native int[] ...

  3. 指针数组 vs 数组指针

        指针数组,故名思义,就是指针的数组,数组的元素是指针:     数组指针,同样,就是直想数组的指针.     简单举例说明:     int *p[2]; 首先声明了一个数组,数组的元素是in ...

  4. QScopedPointer

    QScopedpointer detailed description the QScopedpointer class stores a pointer to a dynamically alloc ...

  5. 生成分布式随机ID

    经测试,最快的一种 public class Generator { // should be between 40 (34 years) and 42 (139 years) ; // should ...

  6. QT5 QSS QML界面美化视频课程系列 QT原理 项目实战 C++1X STL

    QT5 QSS QML界面美化视频课程系列 QT原理 项目实战 C++1X STL 课程1   C语言程序设计高级实用速成课程 基础+进阶+自学 课程2   C语言程序设计Windows GDI图形绘 ...

随机推荐

  1. linux批量执行工具omnitty使用方法

    一.omnitty概述 在生产环境中,可能会有多台linux主机.运维人员可能会对多台主机进行同样的操作,例:同时在多台主机上添加一个user或查看所有主机的硬件信息,如果没有批量操作工具,设备少于2 ...

  2. LSI MegaCli 命令使用4

    Dell服务器常用管理命令总结准备新版本的 MegaCli-1.01.24-0.i386.rpm 会把程序安装在/opt下,可以自定义安装目录,例如:rpm --relocate /opt/=/usr ...

  3. ASP.NET-FineUI开发实践-1

    用.Net开发3年,主要接触资产管理,生产流程,质量追溯,.Net在这方面还是很靠谱的.2月低接触FineUI,那时版本是3.0+,第一眼让我想起了ExtJs,其实就是用.Net封装了ExtJs让AS ...

  4. 排序算法之奇偶排序 JAVA奇偶排序算法

    奇偶排序法的思路是在数组中重复两趟扫描.第一趟扫描选择所有的数据项对,a[j]和a[j+1],j是奇数(j=1, 3, 5……).如果它们的关键字的值次序颠倒,就交换它们.第二趟扫描对所有的偶数数据项 ...

  5. \r \n有什么区别

    '\r'是回车,'\n'是换行,前者使光标到行首,后者使光标下移一格.通常用的Enter是两个加起来.下面转一篇文章. 回车和换行 今天,我总算搞清楚“回车”(carriage return)和“换行 ...

  6. 安装 SQL Server2008 安装程序规则支持提示“重新启动计算机”失败

    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager 删除 PendingFileRenameOperations这个 ...

  7. linux定时执行任务 转

    转自:http://www.cnblogs.com/thinksasa/archive/2013/06/06/3121030.html linux定时执行任务   (1)Linux下如何定时执行php ...

  8. php javascript

    php100:103:Jquery javascript javascript:网页用来改进设计.验证表单.检测浏览器.创建cookies. Javascript(简称JS) 和 HTML 标签一样都 ...

  9. js解决网页无法复制文字的问题

    碰到有些网站,站长禁止了右键,或者用其它方法不让复制网页的文字,弄的好烦人啊,虽然这是小把戏,但多多少少造成了一些不方便,前几天发现这个解决不能复制问题的小方法,一行代码即搞定,就是下面这行: jav ...

  10. python ciscolib模块

    python的第三方模块ciscolib可以登录交换机执行相关命令 ciscolib下载地址: https://github.com/nickpegg/ciscolib 常见用法如下: switch ...