C语言指针中易混淆的概念

一、数组指针与指针数组的区别

考虑数组的指针的时候我们要同时考虑类型和维数这两个属性。换一句话,就是说一个数组排除在其中存储的数值,那么可以用类型和维数来位置表示他的种类。

A)一维数组

在c和c++中数组的指针就是数组的起始地址(也就第一个元素的地址),而且标准文档规定数组名代表数组的地址(这是地址数值层面的数组表示)。例如:

int a[10];int *p;

p=&a[0]//和p=a是等价的:

因为a是数组名,所以他是该数组的地址,同时因为第一个元素为a[0],那么&a[0]也代表了该数组的地址。但是我们是不是就说一个数组名和该数组的第一个元素的&运算是一回事呢?在一维的时候当时是的,但是在高维的时候,我们要考虑到维数给数组带来的影响。

a[10]是一个数组,a是数组名,它是一个包含10个int类型的数组类型,不是一般的指针变量噢!(虽然标准文档规定在c++中从int[]到int*直接转换是可以的,在使用的时候似乎在函数的参数为指针的时候,我们将该数组名赋值没有任何异样),a代表数组的首地址,在数字层面和a[10]的地址一样。这样我们就可以使用指针变量以及a来操作这个数组了。

所以我们要注意以下问题:

(1) p[i]和a[i]都是代表该数组的第i+1个元素; (2) p+i和a+i代表了第i+1个元素的地址,所以我们也可以使用 *(p+I)(3)p+1不是对于指针数量上加一,而是表示从当前的位置跳过当前指针指和*(a+I)来引用对象元素; 向类型长度的空间,对于win32的int为4byte;

B)多维数组

对于二维数组a[4][6];由于数组名代表数组的起始地址,所以a(第一层)和第一个元素a[0][0]地址的数字是相同的,但是意义却是不同的。对于该数组我们可以理解为:a的一维数组(第一层),它有四个元素a[0]、a[1]、a[2]、a[3](第二层),而每个元素又含有6个元素

a[0][0],a[0][1],a[0][2],a[0][3],a[0][4],a[0][5](第三层),…到此我们

C语言中易混淆的标识符,C语言指针中易混淆的概念相关推荐

  1. c语言函数调用找不到标识符,C语言在main中调用函数时找不到标识符

    把定义的函数放在,main函数之前即可. (推荐学习:phpstorm) 自定义的函数需要声明在调用之前,比如说在main函数里调用自定义的fun(),则fun()的方法体需要写在main函数之前. ...

  2. 在C语言中 下面标识符非法的是,下面哪一项在Java中是非法的标识符? 答案:Youme...

    相关问题 下列选项中,符合Python命名规范的标识符是( ): 选项 中 Python 标识符 name 指针,描述,变量,变量,变量,地址,值,类型,变量,类型,命名,规则,标识符,指针,时,号, ...

  3. 下列关于python语言中缩进的说法正确的是_关于Python程序中与“缩进”有关的说法中,以下选项中正确的是 _________ 。_学小易找答案...

    [单选题]表达式 'x' or 'y' or [] 的返回值为______. [判断题]( )中国与金砖国家贸易互补性强. [判断题]( ).中国是世界上最大的纺织品生产国和出口国,约占世界纺织品贸易 ...

  4. 如何用C语言改变宏定义的大小,C语言中宏定义使用的小细节

    C语言中宏定义使用的小细节 #pragma#pragma 预处理指令详解 在所有的预处理指令中,#Pragma 指令可能是最复杂的了,它的作用是设定编译器的状态或者是指示编译器完成一些特定的动作.#p ...

  5. A13在c语言中是合法变量吗,C语言中局部变量和全局变量等在内存中的存放位置.doc-资源下载在线文库www.lddoc.cn...

    C语言中局部变量和全局变量_等在内存中的存放位置.doc C 语言中局部变量和全局变量 变量的存储类别static,extern,auto,register 8.8 局部变量和全局变量在讨论函数的形参 ...

  6. c语言中占位符,Java C# C语言中的占位符

    一般拼接一段字符串在编程中是很常见的事,下面简单做个总结: 什么是占位符?占位符就是先占住一个固定的位置,等着你再往里面添加内容的符号. 1.Java中处理方法: package com.amos; ...

  7. c语言类似于 n的标识符,C语言快速入门教程(二)

    C语言快速入门教程(二) C语言的基本语法 本节学习路线图: 引言: C语言,顾名思义就是一门语言,可以类比一下英语; 你要说出一个英语的句子需要: 单词 + 语法! 将单词按照一定的语法拼凑起来就成 ...

  8. Linux中python、C++和C语言的多线程用法整理(_thread、threading、thread和pthread)

    目录 python3 开始学习Python线程 _thread 常量和函数: 锁对象 试用基本功能 试用线程同步 threading 函数 常量 类 线程本地数据 线程对象 锁对象 递归锁对象 条件对 ...

  9. c语言将注释和语句分离,C语言组卷系统中重复题问题研究

    C语言组卷系统中重复题问题研究 作者:陈星 李郴 来源:电脑知识与技术 201801期 时间:2018-06-02 摘要:在一套试卷中,重复题问题是影响考试质量的一个重要因素.该文针對C语言试卷中选择 ...

最新文章

  1. Android draw9patch点九图常识
  2. tensorflow随笔-读文件
  3. 简单理解AOP(面向切面编程)
  4. 疫情伤了谁?反正不是这8大直播行业
  5. 跳转语句_C/C++中的goto语句
  6. 240多个jquery插件
  7. kibana 查询_Exceptionless服务端+kibana部署实时日志纪要
  8. c语言学习进阶-C语言带命令行参数的文件数据批量计算
  9. e-r 概念模型 关系模型_数据库数据模型(分类、三要素、概念)
  10. ImportError: No module named tensorrt
  11. 数字图像处理 采样定理_数字图像处理(第4版)
  12. mm模块流程图 sap_SAP业务流程之MM
  13. 利用photoshop制作身份证复印件的流程
  14. 什么是GC,GC是什么意思?为什么要有GC?
  15. 什么是闭包,闭包的作用与好处是什么,何时使用闭包,对闭包的改进
  16. 苹果、谷歌、脸书等公司该怎样分配股权?
  17. 计算机软件工程网络管理员实习报告范文、周记及总结30篇
  18. MFC 中Edit Box 不响应回车键 和删除键
  19. 点石互动--石头之用户搜索行为与关键词分析(二):用户也会犯错
  20. mysql的单页应用框架搭建_单页应用(SPA)的特征

热门文章

  1. content(contents)
  2. 2020年,10个让人深思的问题
  3. c语言uint8 t转字符串,如何将uint8_t显示为整数或字符串?
  4. 苹果手机以旧换新价格表_互联网资讯 | 5月19日 星期二|李佳琦饿了么吃播首秀;苹果支持安卓手机以旧换新...
  5. 【通信原理】复习笔记——模拟调制系统
  6. 基于MWORKS.Syslab的机器学习算法应用案例-动物咳嗽检测
  7. Spring Cloud 集成 Hystrix 熔断器
  8. 联想V310-14ISK硬件升级
  9. 应用概率统计(陈魁)第八章部分课后答案
  10. WordPress主题制作