观郝老师课程的C语言笔记

指针和数组

  • 一维数组名:

  1.   一维数组名是个指针常量,它存放的是一维数组第一个元素的地址。
  2. int a[4],那么 a[3] 等价于 * (a+3),指向第四个元素。
  3. 确定一维数组需要几个参数
  • 如果一个函数要处理一个一维数组需要两个参数:

  1. 数组第一个元素的地址
  2. 数组的长度
  • 指针变量的运算

  1. 指针变量不能相加 不能相乘 也不能相除
  2. 如果两个指针变量指向的是同一块连续空间中的不同存储单元,则这两个指针变量才可以相减。 
  • 一个指针变量到底占几个字节

  1. sizeof(数据类型/变量名),功能:返回值就是该 数据类型/变量名 所占的字节数。
  2. 假设p指向char类型变量(1个字节)
  3. 假设q指向int类型变量(4个字节)
  4. 假设r指向double类型变量(8个字节)
  5. p q r 本身所占的字节数是否一样? 答案:p q r 本身所占的字节数是一样的
  6. 总结:一个指针变量,无论它指向的变量占几个字节,该指针变量本身只占四个字节一个变量的地址使用该变量首字节的地址来表示。

动态内存分配

  • 传统数组的缺点:

  1. 数组长度必须事先制定,且只能是常整数,不能是变量。
  2. 传统形式定义的数组,该数组的内存程序员无法手动释放。数组一旦定义,系统为该数组分配的存储空间就会一直存在,直到该函数运行完毕时,数组的空间才会被系统释放。
  3. 数组的长度一旦定义,其长度就不能再更改,即数组的长度不能在函数运行的过程中动态的扩充或缩小。
  4. A函数定义的数组,在A函数运行期间可以被其它函数使用,但A函数运行完毕之后,A函数中的数组将无法再被其它函数使用。  即传统方式定义的数组不能跨函数使用
  • 动态内存和静态内存的比较

  1. 静态内存是由系统自动分配,由系统自动分配,由系统自动释放。
  2. 静态内存是在栈分配的。
  3. 静态内存不可以跨函数使用后。
  4. 动态内存是由程序员手动分配,手动释放。
  5. 动态内存是在堆分配的。
  6. 动态内存可以跨函数使用。 

结构体

  • 什么叫结构体

  1. 把一些基本类型数据组合在一起形成的一个新的复合数据类型
  • 如何定义结构体

  1.   这是定义了一个数据类型,并没有定义变量。
  • 怎样使用结构体变量

  1. 赋值和初始化             

  2. 如何取出结构体变量中的每一个成员            

  3. 结构体变量的运算:结构体变量不能相加,不能相减,也不能相互乘除,但结构体变量可以相互赋值。       例如:            

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值