int **ptr 与 int ptr[4][4] 的区别???

*(*(ptr+1)+2);相当于ptr[1][2];

**p可以理解成*((*p+0)+0);相当于ptr[0][0];

区别在于:int **ptr定义了一个指针(具体的,二级指针),它使得编译程序使程序在运行时分配一点点内存用来存放这个指针——某个数值,它标明了内存中的某个位置; 而int ptr[4][4]定义了一个二维数组,它使得编译程序让程序在运行时在内存中分配sizeof(int)*4*4个字节用来存放数据。int **ptr中定义的ptr是一个变量,如果需要,你可以随时变换它的值——它也仅仅是一个值;而int ptr[4][4]中定义的ptr本身是一个常量.这个常量用来使编译器明白你所引用的是那个你已经为其分配过内存的数组,ptr这个引用的有效性依赖于

编译器,编译器会直接把它替换成某个常量——在运行时,根本没有任何内存空间来把这个值当作变量存放,它存在于代码中,是在连接时已经指定好的,一般的, 程序本身没有权利再去改变它。

一句话,int **ptr是一个可变的句柄,你可以让它指向任何你感兴趣的内容(一般的,你准备把这个内容当作一个二维数组看待),它并没有分配任何存放实际数据的空间 ——这也是它不必要指定大小的原因,而int ptr[4][4]是一个空间,当然,这个空间附送了你一个引用它的句柄,这个句柄既然是配合这个空间附送给你的,当然它值用于引用这个空间,所以它是不 可变得。

int (*ptr) ();是什么意思啊? ptr又是什么意思啊ÿ

c语言 函数声明 int *p和int **p,int **p 、int (*p)() 、 int (*p)[5] 和int (**p)()相关推荐

  1. c语言函数声明定义参数命名,C语言函数声明与定义

    C语言函数声明与定义教程 在 C语言函数声明与定义 语法 type funcName(paramType1 param1, paramType2 param2){ // 执行语句... return ...

  2. C语言 函数声明和调用 - C语言零基础入门教程

    目录 一.简介 二.函数声明和定义 1.函数声明:不需要实现这个函数的功能 2.函数定义:必须实现这个函数的功能 三.函数调用 四.函数形参和实参 五.猜你喜欢 零基础 Python 学习路线推荐 : ...

  3. C语言 函数声明和定义 - C语言零基础入门教程

    目录 一.简介 二.函数返回值 1.函数没有返回值 2.函数有返回值 三.函数参数 1.函数没有参数 2.函数有固定参数 3.函数有不定长度参数 四.函数声明和定义 1.函数声明:不需要实现这个函数的 ...

  4. c语言常用的格式声明,c语言函数声明格式是什么

    c语言函数声明格式是什么 c语言函数声明格式是"函数类型 函数名称(参数列表);".在函数声明中的参数列表中,不需要给出具体的变量名称,但必须给出每个变量的类型. 函数声明,不是说 ...

  5. c语言,函数声明的误区

    文章目录 结论 官方依据 项目上,使用一个未声明的,返回值为float类型的函数;结果,返回值完全非预期.被整的怀疑人生. 根深蒂固的一个错误认知: 在C语言中,函数在调用前不一定非要声明. 如果没有 ...

  6. c语言goout函数,Go语言函数声明(函数定义)

    函数构成了代码执行的逻辑结构,在Go语言中,函数的基本组成为:关键字 func.函数名.参数列表.返回值.函数体和返回语句,每一个程序都包含很多的函数,函数是基本的代码块. 因为Go语言是编译型语言, ...

  7. C语言函数声明以及函数原型

    C语言代码由上到下依次执行,原则上函数定义要出现在函数调用之前,否则就会报错.但在实际开发中,经常会在函数定义之前使用它们,这个时候就需要提前声明. 函数声明(Declaration),就是告诉编译器 ...

  8. c语言函数原型语句,C语言函数声明以及函数原型

    C语言代码由上到下依次执行,原则上函数定义要出现在函数调用之前,否则就会报错.但在实际开发中,经常会在函数定义之前使用它们,这个时候就需要提前声明. 所谓声明(Declaration),就是告诉编译器 ...

  9. C语言函数声明、定义、调用

    函数的声明: 就是告诉编译器我要使用这个函数,你现在没有找到它的定义不要紧,请不要报错,稍后我会把定义补上. 有的时候不写声明函数也是可以执行的,但是把函数定义写在函数调用之后就会有提示甚至报错. 函 ...

最新文章

  1. 又居家办公了,要签合同怎么办?
  2. android 打包hbuilder 高德地图加载不出来_十一黄金周地图很忙:百度获央视报道,高德忙道歉,究竟谁好用?...
  3. 命令行mvn打包的时候报错:No compiler is provided in this environment. Perhaps you are running on a JRE
  4. 达内软件测试证书是什么证书,达内软件测试培训让我拥有了实际工作经验
  5. 别求面经了!小夕手把手教你如何斩下和选择NLP算法岗offer!(19.11.21更新)
  6. matlab三角形分割,MATLAB 2014b及以上版本中带有画家渲染器的三角形拆分补丁
  7. Codeforces 1105C (DP)
  8. vue 连接地址下载 PDF
  9. 2017-2018-1 点集拓扑
  10. vs2005下载,中文版,官方
  11. CTF常见的php函数
  12. 卸载 Creative Cloud 桌面应用程序(macOS、Windows)
  13. 整车行业 SAP APO 开发备忘(刘欣)
  14. Redis 总结 —— 2022/2/6
  15. Java-Swing内嵌网页判断网址类型
  16. 模拟网上手机抽奖界面(供大家BS......)
  17. vulnhub:THOTH TECH:1靶机
  18. lightroom最新版本下载_Lightroom CC 2019|Lightroom CC 2019 正式版下载_太平洋下载中心...
  19. 华为css与堆叠,华为S12700集群CSS和S6700堆叠iStack
  20. Android通过WindowManager.LayoutParams修改Activity窗口亮度流程

热门文章

  1. Slater条件理解和证明
  2. 《html5+css3课程 前端开发项目实战》完整版
  3. 如何访问局域网的网站【路由器设置端口映射】
  4. USB Camera Driver issue
  5. MS10-073微软Windows内核Win32k.sys键盘布局本地提权漏洞 fix poc
  6. linux运维基础[系统磁盘管理]——————磁盘的物理结构[内部结构、外部结构、计算磁盘大小]
  7. 2021腾讯校招笔试
  8. 算法-发明KMP算法的唐纳德·克努特是怎么想到失配函数next[j]的?
  9. Eclipse在线集成maven M2eclipse插件
  10. Jetpack Compose 深入探索系列四: Compose UI