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);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/461118.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php抓取动态数据,php+ajax实现无刷新动态加载数据技术

我们浏览有些网页的时候,当拉动浏览器的滚动条时到页底时,页面会继续自动加载更多内容供用户浏览。这种技术我暂且称它为滚屏加载技术。我们发现很多网站用到这种技术,必应图片搜索、新浪微博、QQ空间等将该技术应用得淋漓尽致。滚屏加载技术…

图片播放器小项目(详解)

以下内容源于朱有鹏《物联网大讲堂》课程的学习整理,如有侵权,请告知删除。一、开始动手写代码 1、Makefile介绍 (1)这是一个通用的项目管理的Makefile体系,自己写的(有子文件夹组织的)项目可以…

基于linux-2.6.32.2的servfox移植

说明:这篇文章是本人在做基于web客户端的远程监控系统课题期间,在移植servfox应用服务程序费了很大周折,所以写下的。 只是介绍了基于arm的servfox移植【因为其他部分的移植没有遇到过错误】 前言: 如何移植基于linux的USB摄像头驱…

Telnet远程访问思科交换机、路由器

一、实验目的Telnet远程访问思科交换机、路由器二、实验拓扑三、实验步骤1、PC1远程管理S11)配置交换机的管理IPS1(config)#int vlan 1S1(config-if)#ip add 192.168.1.100 255.255.255.0S1(config-if)#no shu2)开启S1的telnet远程管理服务S1(config)#li…

php redis 队列,Redis 实现队列

## Redis 实现队列Redis 实现队列场景说明:用于处理比较耗时的请求,例如批量发送邮件,如果直接在网页触发执行发送,程序会出现超时高并发场景,当某个时刻请求瞬间增加时,可以把请求写入到队列,后…

offsetTop测试见解

offsetTop一开始以为只要容器内div的top定位为负就行&#xff0c;结果今天刚做了个demo&#xff0c;发现好像不是那么回事&#xff0c;于是经过各种测试&#xff0c;得出了一些结论&#xff0c;结论看demo <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" &qu…

[置顶]       cocos2d-x 手游源码站

尊重开发者的劳动成果&#xff0c;转载的时候请务必注明出处&#xff1a;http://blog.csdn.net/haomengzhu/article/details/37829061 1、魔幻方块 链接&#xff1a;魔幻方块源码关键词&#xff1a;魔幻方块源码 源代码 Cocos2d-x2.0 游戏源码 益智 休闲 游戏 游戏类型&#xf…

include “ “ 与 include < > 的区别

#include <>格式&#xff1a;引用标准库头文件&#xff0c;编译器从标准库目录开始搜索。 #incluce " "格式&#xff1a;引用非标准库的头文件&#xff0c;编译器从用户的工作目录开始搜索&#xff0c;如果找不到&#xff0c;再到标准位置寻找。 预处理器发现…

php 字符串的比较大小,php怎么比较两个字符串的大小

比较字符串是任何编程语言的字符串处理功能中重要的特性之一。在PHP中除了可以使用比较运算符号(、)加以比较外&#xff0c;还提供了一系列的比较函数&#xff0c;使PHP可以进行更复杂的字符串比较。如strcmp()、strcasecmp()和strnatcmp()等函数。1、按字节顺序进行字符串比较…

Android SDK开发包国内下载地址

原帖地址&#xff1a;http://www.cnblogs.com/bjzhanghao/archive/2012/11/14/2769409.html 不知道是因为最近kaihui还是怎么的&#xff0c;打开android sdk官方网站特别的慢&#xff0c;想下载最新版本的platform几乎变成不可能完成的任务&#xff0c;不知道为什么Google不像…

SharePoint 2013 Workflow - Advanced Workflow Debugging with Fiddler

来自&#xff1a;Andrew Connell [MVP SharePoint] | 时间&#xff1a;2012-07-18 19:26:30 原文链接&#xff1a; http://www.andrewconnell.com/blog/archive/2012/07/18/sharepoint-2013-workflow-advanced-workflow-debugging-with-fiddler.aspx In previous posts Iv…

调试技巧——宏定义开关和printf

转自http://blog.csdn.net/guanyasu/article/details/51866984 #ifndef __CONFIG_H__ #define __CONFIG_H__#define DEBUG/*#undef DEBUG */#ifdef DEBUG #define debug(...) \{\fprintf(stderr,"[DEBUG] [%s:%s:%d]",__FILE__,__FUNCTION__,__LINE__);\fprin…

java sheet 打印区域设定,如何使用Java设置电子表格的打印区域。(How to set the print area of a spreadsheet using Java.)...

如何使用Java设置电子表格的打印区域。(How to set the print area of a spreadsheet using Java.)问题描述 (Problem Description)如何使用Java设置电子表格的打印区域。解决方案 (Solution)以下是使用Java设置电子表格打印区域的程序。import java.io.File;import java.io.Fi…

RedHat6.2 x86手动配置LNMP环境

为什么80%的码农都做不了架构师&#xff1f;>>> 因为公司要求用RedHat配&#xff0c;顺便让我练习一下Linux里面的操作什么的。 折腾来折腾去终于搞好了&#xff0c;其实也没那么难嘛。但是也要记录一下。 首先&#xff0c;是在服务器里面用VMware搭建的RedHat6.2 …

Java中装箱与拆箱

JDK5.0 之后提供了一种新特性&#xff1a;自动装箱拆箱。 既然是装拆箱&#xff0c;那么我们先来看看这个所谓的“箱”&#xff1a; java中的8种基本数据类型都有与之对应的封装类&#xff08;封装类就是所谓的箱&#xff09;。分别是&#xff1a;byte short int long double f…

《c语言深度剖析》读书笔记

一、注意点 1、 2、 3、 4、 5、 6、 7、 8、 9、 10、 11、 二、问题 1、 2、 3、 4、 5、 6、 7、

位操作的细节

一、位操作符 &#xff08;1&#xff09;位与& 位与符号是一个&&#xff0c;两个&&是逻辑与。位与时两个操作数是按照二进制位彼次对应位相与的&#xff0c;逻辑与是两个操作数作为整体来相与的。&#xff08;举例&#xff1a;0xAA&0xF00xA0, 0xAA &&…

Android支付接入(五):机锋网

前边已经陆续跟大家走了一遍运营商和支付宝付费接入&#xff0c;今天跟大家一起看看机锋网的支付接入。事实上付费接入本身并没有太多须要注意的地方&#xff0c;做的多了以后你会发现套路都是大同小异的。而须要注意的地方在于怎么跟游戏兼容及后期的维护&#xff0c;包含增减…

内存的使用

内容整理于朱有鹏老师的课程。 1、冯诺依曼结构和哈佛结构 冯诺依曼结构是数据和代码放在一起&#xff0c;哈佛结构是数据和代码分开存在。什么是代码&#xff1a;函数。什么是数据&#xff1a;全局变量、局部变量。在S5PV210中运行的linux系统上&#xff0c;运行应用程序时&am…

java启动密码,java - 用户验证密码后如何启动java applet程序? - SO中文参考 - www.soinside.com...

我正在尝试连接两个简单的java程序&#xff0c;一个密码登录程序&#xff0c;然后打开第二个程序(一个非常简单的PrintWriter程序)。我是一个大型菜鸟&#xff0c;所以尝试将二级程序添加到密码程序中。显然这没用。我看到很多关于创建密码程序的条目&#xff0c;以及一些关于使…