C语言——深入理解指针

这篇具有很好参考价值的文章主要介绍了C语言——深入理解指针。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.数组名的理解

实数组名就是数组⾸元素(第⼀个元素)的地址,但是有两个例外:
sizeof(数组名),sizeof中单独放数组名,这⾥的数组名表⽰整个数组,计算的是整个数组的⼤⼩,单位是字节

&数组名,这⾥的数组名表⽰整个数组,取出的是整个数组的地址(整个数组的地址和数组⾸元素的地址是有区别的)。

除此之外,任何地⽅使⽤数组名,数组名都表⽰⾸元素的地址。
C语言——深入理解指针,c语言,开发语言
C语言——深入理解指针,c语言,开发语言

2.使用指针访问数组

C语言——深入理解指针,c语言,开发语言

数组元素的访问在编译器处理的时候,也是转换成⾸元素的地址+偏移量求出元素的地址,然后解引⽤来访问的。

3.一维数组传参的本质

C语言——深入理解指针,c语言,开发语言

数组传参的本质是传递数组首元素的地址,所以形参访问的数组和实参是同一个数组。

形参的数组是不会单独再申请数组空间的,所以形参的数组是可以省略掉数组大小的。

4.二级指针

C语言——深入理解指针,c语言,开发语言

C语言——深入理解指针,c语言,开发语言

以此类推,三级指针的表示方法为int ** * p...

5.指针数组(是数组)

C语言——深入理解指针,c语言,开发语言

指针数组模拟二维数组:

C语言——深入理解指针,c语言,开发语言

C语言——深入理解指针,c语言,开发语言

上述的代码模拟出⼆维数组的效果,实际上并⾮完全是⼆维数组,因为每⼀⾏并⾮是连续的。

6.字符指针变量

C语言——深入理解指针,c语言,开发语言      C语言——深入理解指针,c语言,开发语言

 C语言——深入理解指针,c语言,开发语言C语言——深入理解指针,c语言,开发语言

常量数据放在代码段中,不可更改。

这⾥str3和str4指向的是⼀个同⼀个常量字符串。C/C++会把常量字符串存储到单独的⼀个内存区域,当⼏个指针指向同⼀个字符串的时候,他们实际会指向同⼀块内存。但是⽤相同的常量字符串去初始化不同的数组的时候就会开辟出不同的内存块。所以str1和str2不同,str3和str4相同。

7.数组指针变量(是指针)

去掉名字,剩下的就是指针类型

[ ]的优先级高于{ }

字符指针变量:char* p 存放的是字符变量的地址,能够指向字符数据的指针。

整形指针变量:int* p 存放的是整形变量的地址,能够指向整形数据的指针。

浮点型指针变量:float* p存放的是浮点型变量的地址,能够指向浮点型数据的指针。

...

数组指针变量:存放的是数组的地址,能够指向数组的指针

C语言——深入理解指针,c语言,开发语言            C语言——深入理解指针,c语言,开发语言

C语言——深入理解指针,c语言,开发语言

8.二维数组传参本质

⼆维数组起始可以看做是每个元素是⼀维数组的数组,也就是⼆维数组的每个元素是⼀个⼀维数组。那么⼆维数组的⾸元素就是第⼀⾏,是个⼀维数组。

C语言——深入理解指针,c语言,开发语言

二维数组的首元素地址就是第一行地址,第一行地址就是一维数组整个数组的地址,类型是数组指针类型。

⼆维数组传参本质上也是传递了地址,传递的是第⼀⾏这个⼀维数组的地址,

C语言——深入理解指针,c语言,开发语言

9.函数指针变量

C语言——深入理解指针,c语言,开发语言

C语言——深入理解指针,c语言,开发语言

代码分析:

C语言——深入理解指针,c语言,开发语言

C语言——深入理解指针,c语言,开发语言

typedef关键字

typedef 是⽤来类型重命名的,可以将复杂的类型,简单化。
C语言——深入理解指针,c语言,开发语言
typedef 与 define 的区别:
C语言——深入理解指针,c语言,开发语言

10.函数指针数组(函数指针类型的数组)

把函数的地址存到⼀个数组中,那这个数组就叫函数指针数组。

C语言——深入理解指针,c语言,开发语言文章来源地址https://www.toymoban.com/news/detail-845999.html

到了这里,关于C语言——深入理解指针的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • C语言——从头开始——深入理解指针(1)

     一.内存和地址 我们知道计算上CPU(中央处理器)在处理数据的时候,是通过地址总线把需要的数据从内存中读取的,后通过数据总线把处理后的数据放回内存中。如下图所示: 计算机把内存划分为⼀个个的 内存单元 ,每个内存单元的大小取1个字节( 1个字节(Byte)=8个比特

    2024年02月21日
    浏览(35)
  • C语言深入理解指针(非常详细)(四)

    字符指针在之前我们有提到过,(字符)(指针)前面的字符代表着存储的元素为字符类型,而指针则是表示这存储的方式。 写法为char * 一般使用的方式如下: 还有一种使用方式如下: 值得注意的是: 代码 const char pstr = “hello jack.”; 特别容易以为是把字符串 hello jack 放到

    2024年02月09日
    浏览(30)
  • C语言深入理解指针(非常详细)(二)

    指针的基本运算有三种,分别是: • 指针±整数 • 指针-指针 • 指针的关系运算 因为数组在内存中是连续存放的,比如int类型的数组,每个元素相差4个字节,因此我们只需要知道首元素的地址就可以通过加减的方式找到后面元素的地址 。 概念:野指针就是指针指向的位置

    2024年02月10日
    浏览(34)
  • C语言深入理解指针(非常详细)(一)

    在将内存和地址时我们先举一个生活中的例子: 假设有⼀栋宿舍楼,把你放在楼里,楼上有100个房间,但是房间没有编号,你的⼀个朋友来找你玩, 如果想找到你,就得挨个房子去找,这样效率很低,但是我们如果根据楼层和楼层的房间的情况,给每个房间编上号,如: 有

    2024年02月10日
    浏览(29)
  • 【C语言基础】:深入理解指针(三)

    指针系列回顾 : 【C语言基础】:深入理解指针(一) 【C语言基础】:深入理解指针(二) 一、冒泡排序 冒泡排序的核心思想就是:两两相邻的元素进行比较。 可以看到,这段代码对arr数组进行了排序,但这个代码还有一些缺陷,那就是无论数组内部的元素是否有序,他都会循

    2024年03月10日
    浏览(32)
  • 【C语言】指针的入门篇2,深入理解指针和数组的关系

    欢迎来CILMY23的博客喔,本期系列为【C语言】指针的入门篇2,深入理解指针和数组的关系,图文讲解指针和数组关系的知识,带大家理解指针和数组的关系,以及指针+数组的用法,感谢观看,支持的可以给个赞哇。 前言 在上一篇博客中,我们了解了指针就是地址,并且把地

    2024年02月20日
    浏览(35)
  • C语言之指针篇【超详细讲解,带你层层深入理解指针】

    目录 一、关于指针 二、指针类型 1、整型指针的访问权限说明: 2、字符指针的访问权限说明: 3、指针的类型决定向前或向后一步走了多大距离 三、野指针相关知识 1、野指针的成因 ①指针未初始化 ②指针的越界访问 ③指针所指向的空间释放了 2、如何规避野指针 ①指针

    2024年02月02日
    浏览(30)
  • C语言指针(适合C语言进阶者):一道题带你深入理解数组与指针的关系

    🎈个人主页:JAMES别扣了 💕在校大学生一枚。对IT有着极其浓厚的兴趣 ✨系列专栏目前为C语言初阶、后续会更新c语言的学习方法以及c题目分享. 😍希望我的文章对大家有着不一样的帮助,欢迎大家关注我,我也会回关,大家一起交流一起互动,感谢大家的多多支持哈! 🎉

    2024年04月16日
    浏览(42)
  • 对指针的深入理解

    在讲解本次内容前,先来看个小栗子: 我们在代码中定义了一个更安全的 free 函数 safe_free ,在该函数中我们事先对指针 ptr 进行了参数校验,并在 free 后及时将其置 NULL,目的是为了防止野指针的出现。 下面让我们来运行一下: 那么疑问来了:在调用 safe_free(p) 时,我明明

    2024年02月05日
    浏览(29)
  • 深入理解ArkTS:Harmony OS 应用开发语言 TypeScript 的基础语法和关键特性

    Harmony OS应用开发的主力语言ArkTS的前身TS语言的基本语法。通过学习变量的声明和数据类型、条件控制、函数声明、循环迭代等基本知识,并了解内核接口的声明和使用。同时还介绍了模块化开发的概念,提高代码的复用性和开发效率。该对话还涉及了if else和switch条件控制语

    2024年02月04日
    浏览(40)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包