总结了一些指针易出错的常见问题(二)
4.指针与数组
一些常见的错误观点是数组和指针是完全可以互换的。尽管数组名字有时候可以当指针来使用,但是数组的名字不是指针。
数组是能用索引访问的同质元素连续集合。(连续是指数组的元素在内存中是相邻的,中间不存在空隙同质是指元素是同一类型)
指针在处理数组时很有用,既可以用指针指向已有的数组,也可以从堆上分配内存然后把这块内存当做一个数组使用。
数组/指针表示法
给数组地址加1实际加了4,也就是整数的长度。
#include<iostream> using namespace std; int main() {int vector[5]={1,2,3,4,5};int *pv=vector;int value=4;for(int i=0;i<5;i++){*pv++ *=value;}pv=vector;for (int i=0;i<5;i++)cout<<*(pv+i)<<endl;}
指针和数组的区别
int vector[5]={1,2,3,4,5};int *pv=vector;
vector[i]生成的代码和*(vector+i)生成的不一样,vector[i]表示法生成的机器码从位置vector开始,移动i个位置,取出内容。而*(vector+i)表示法生成的机器码则是从vector开始,在地址上增加i,然后取出这个地址中的内容。
sizeof操作符对数组和同一个数组的指针操作也是不同的。
sizeof(vector)=20; //数组分配的字节数
sizeof(pv)=4; //指针长度
如果从堆上分配内存并把地址赋给一个指针,那就肯定可以对指针使用数组下标并把这块内存当成一个数组。
int *pv=(int*) malloc(5*sizeof(int));for(int i=0;i<5;i++){pv[i]=i+1;}/ for(int i=0;i<5;i++){ *(pv+i)=i+1;}
转载于:https://www.cnblogs.com/iloverain/p/5582739.html
总结了一些指针易出错的常见问题(二)相关推荐
- 科目三场外考试易出错的环节
现在很多的城市都已经开始实行电子考试,这使得科目三考试更加公平公正,但还是有考生在考试中忽略了场外易出错的环节导致成绩不合格. ●起步前不使用安全带 在等待了约2小时后,考生史某终于坐上 ...
- c语言指针易错情况,C语言/C++从入门到精通之指针易错点总结
指针是C语言的灵魂,所以学好指针很关键,本篇主要介绍了C语言/C++从入门到精通之指针易错点总结,通过具体的内容向大家展现,希望对大家C语言/C++的学习有所帮助. 学习C语言肯定会碰到指针,指针是C ...
- 帝国cms安装不支持MySQL_15招完美解决帝国CMS安装出错和常见问题
博客使用帝国cms之后,在安装的时候就遇到出错的情况.提示的在建立数据库的时候报错.经过检查发现在我安装的时候,没有选择mysql数据库的版本号,直接选择的是自动获取.在安装成功之后,打不开首页,提示 ...
- MBD建模规范 stateflow建模 无规矩不成方圆 规范建模行为 提升建模效率 。 主要包含模型接口界面及布局,模块的安全使用、预防易出错的建模模式
MBD建模规范& stateflow建模 无规矩不成方圆 规范建模行为 提升建模效率 . 主要包含模型接口界面及布局,模块的安全使用.预防易出错的建模模式.提高可测性.模型优化等多方面的内容, ...
- C++指针数组、数组指针、数组名及二维数组技巧汇总
本文较为详细的分析了关于理解C++指针数组,数组指针,数组名,二维数组的一些技巧.是比较重要的概念,相信对于大家的C++程序设计有一定的帮助作用. 一.关于数组名 假设有数组: int a[3] = ...
- C语言:指针的几种形式二
一.const指针 1.const int* p和int const* p:两者意义是相同的.指向的内容是只读数据,不可以q改变:但是指向的地址可以改变. 2.int* const p:必须先对指针初 ...
- dl380g6服务器开机没信号,DL380 G6常见问题二
DL380 G6常见问题二 DL380 G6 支持显卡吗? 支持,DL380 G6 最多可支持 150w 的第三方显卡. DL380 G6 支持 6Gb SAS 或 3Gb SATA 技术吗? 是的, ...
- 关于指针指向地址中“指向”二字的理解
为什么要写这文章? 因为对于这个问题:"定义int* p; 系统会给p分配内存空间吗?" 绝大部分回答都是不会. 但是问题来了,刷网课的时候,看到会为p在栈上开辟内存空间. 由此, ...
- 【C 语言】一级指针 易犯错误 模型 ( 判定指针合法性 | 数组越界 | 不断修改指针变量值 | 函数中将栈内存数组返回 | 函数间接赋值形参操作 | 指针取值与自增操作 )
文章目录 一.判定指针合法性 二.数组越界 三.不断修改指针变量值 四.函数中将栈内存数组返回 五.函数间接赋值形参操作 六.指针取值与自增操作 一.判定指针合法性 判定指针合法性时 , 必须进行如下 ...
最新文章
- 取消Exchange数据库的自动分配功能
- hadoop中datanode无法启动,报Caused by: java.net.NoRouteToHostException: No route to host
- 如何在官网下载java JDK的历史版本
- 秒杀 985 毕业生的职场技能
- java中将查询数据导出_如何在R中将数据框导出到Excel
- MySQL 服务无法启动。 服务没有报告任何错误。 请键入 NET HELPMSG 3534 以获得更多的帮助。...
- < 数据结构 > 树与二叉树
- 腾讯2018秋招笔试真题——安排机器
- 洛谷-3387 【模板】缩点
- Android Studio——类微信界面设计
- 2022年广西食品安全管理员模拟试题及答案
- 58同城和赶集网要合并了!
- c语言中strstr作用,strstr函数的功能
- matlab矩阵创建
- 超市买菜系统c语言,买菜就像逛超市,市北打造国内首个“智慧农贸”系统
- 模块式柔性自动化生产线实训系统
- 深蓝学院移动机器人HW_2
- 云计算的认识和看法_如何通俗的理解云计算和大数据?
- 20几岁决定女人的一生
- 喜忧参半的AI,“裸奔”之下的隐私焦虑 1
热门文章
- DataGridView 用户输入时,单元格输入值的设定
- WHYZOJ-#60 工资(二分)
- 云安全:云访问安全代理(CASB)系统的陷阱和潜力
- Java学习笔记---IO操作
- C# 窗体间传值(使用委托与自定义事件)
- 《HTTP权威指南》学习笔记——HTTP报文
- checksum table 【转】
- 64位WINDOWS 使用PL SQL DEVELOPER 连接ORACLE 出错问题解决
- 【Eclipse】Java Compiler没有Annotaion Processing, 需要安装Eclipse Java Development Tools
- 设计模式---命令模式