美文网首页
9-指针与其他关系&结构体

9-指针与其他关系&结构体

作者: SoftKnife | 来源:发表于2015-07-15 10:43 被阅读42次
People Lack Willpower,Rather Than Strength!

1.指针与数组

  • 相减:两指针变量相减所得之差是两个指针所指数组元素之间相差的元素个数。== (pointer2地址值 -pointer地址值) / sizeof(所指向数据类型).
  • 相加:无意义!

2.指针与字符串

  • 字符串定义:
    • 字符数组:使用字符数组来保存的字符串是保存栈里的,保存栈里面东西是可读可写,所以我们可以改变里面的字符,当把一个字符串常量赋值一个字符数组的时候,那么它会把字符串常量中的所有字符都放到字符数组里面.
    • 字符指针:使用字符指针来保存字符串,它保存的是字符串常量地址,常量区是只读的,所以我们不可以修改字符串中的字符.

3.指针函数&函数指针

  • 指针函数概念:在C语言中允许一个函数的返回值是一个指针(即地址),这种返回指针值的函数称为指针型函数.

  • 函数指针:函数作为一段程序,在内存中也要占据部分存储空间,它也有一个起始地址,即函数的入口地址。这个入口对于指针就是一个突破口!帮助指针快速定位函数空间!

    • 应用:调用函数; 将函数作为参数在函数间传递!

4.结构体

  • 为什么要有结构体类型?

    • 结构体可以把功能相同的数据组织起来(封装数据),存在一起,用的时候方便
    • 在调用函数时,若传递参数较多,传一个结构体相对而言简单一些。
    • iOS开发中经常需要使用结构体
  • 匿名结构体定义结构体变量

    • 省去了结构名,而直接给出结构变量,这种定义变量最大的问题是,不能再次定义新的结构体变量了。但有时这种缺点也会变成优点!
  • 结构体存储原理

    • 何时分配空间:

      • 和其他一般类型一样,定义结构体类型时并不分配内存空间,只有定义变量时,才会分配空间!
    • 为什么要有对齐算法?⭐️

      • 内存是以字节为单位编号,但一些硬件平台对某些特定类型的数据只能从某些特定地址开始, 比如从偶地址开始。若不按照适合其平台的要求对数据存放进行对齐,会影响到效率。 因此,在内存中,各类型的数据是按照一定的规则在内存中存放的,这就是对齐问题。
      • 许多实际的计算机系统对基本类型数据在内存中存放的位置有限制,它们会要求这些数据的起始地址的值是某个数k的倍数,这就是所谓的内存对齐,而这个k则被称为该数据类型的对齐模数(alignment modulus)
      • 这种强制的要求一来简化了处理器与内存之间传输系统的设计,二来可以提升读取数据的速度。比如这么一 种处理器,它每次读写内存的时候都从某个8倍数的地址开始,一次读出或写入8个字节的数据,假如软件能 保证double类型的数据都从8倍数地址开始,那么读或写一个double类型数据就只需要一次内存操作。否 则,我们就可能需要两次内存操作才能完成这个动作,因为数据或许恰好横跨在两个符合对齐要求的8字节 内存块上。
    • 对齐模数的确定:

      • 方法1:可以理解为每一次分配多少个字节存储空间,可以通过#pragma pack()指定
      • 方法2:默认情况下,对齐的模数是占用存储空间最大的成员所占用的字节数
      • 对齐模数:#pragma pac指定的数值和结构体内部最大的基本数据类型成员长度中数值较小者。而结构体实际长度为---该模数的整数倍。
  • 结构体嵌套

    • 结构体不可以嵌套自己变量,可以嵌套指向自己这种类型的指针❤️!
  • 结构体指针&结构体数组

  • 结构体作为函数形参

  • 枚举类型:

    • 枚举类型是一种基本数据类型,而不是一种构造类型,因为它不能再分解为任何基本类型。 - C语言编译器会将枚举元素作为整型常量处理,称为枚举常量

相关文章

  • 9-指针与其他关系&结构体

    1.指针与数组 相减:两指针变量相减所得之差是两个指针所指数组元素之间相差的元素个数。== (pointer2地址...

  • C语言20 结构体指针

    C语言20 结构体指针 探测结构体指针的特性 ++、-- 加法与减法 指针相减 使用结构体指针 结构体指针一定要指...

  • C语言-5、结构体

    写法一 写法二 写法三 结构体指针 结构体指针 与 动态内存开辟 结构体的数组 结构体与结构体指针 取别名 取别名...

  • 结构体与结构体指针数组

    1.结构体定义与使用。 2.结构体指针 与 动态内存开辟。 3.结构体的数组。 4.结构体与结构体指针 取别名。 ...

  • C语言基础及指针⑧文件IO

    接续上篇C语言基础及指针⑦结构体与指针在结构体与指针中 , 我们了解到结构体与java中的类相似 , 也是一种自定...

  • 2017年9月23日 学习总结1

    今天重点复习指针,指针与数组的关系。 对结构体指针的使用需要再进一步理解。

  • Day10

    指针 指针与函数 练习回调函数 结构体 基本概念 结构体变量初始化 定义结构体变量 结构体变量作用域结论; 和变量...

  • 结构体与结构体指针

    C中的结构体,对应JAVA中的类的概念。也就是一些数据结构的集合,形成一种新的数据结构。 见一个例子 struct...

  • C语言基础03:结构体&结构体与指针

    一、什么是结构体结构体是一种构造数据类型。把不同的数据类型整合起来成为一个自定义的数据类型。关键字 struct。...

  • 函数指针,联合体,枚举,结构体和结构体指针

    函数指针 联合体 枚举 别名 结构体 结构体指针

网友评论

      本文标题:9-指针与其他关系&结构体

      本文链接:https://www.haomeiwen.com/subject/lsouqttx.html