第五节课

一、

1. const修饰的变量,不能被改变。

1. Const定义变量的同时,必须初始化。

2. #define         预编译-->.i

二、回顾数组

   1.栈上的布局:从高地址到低地址

              数组例外,数组a[0]在低地址,a[5]高地址
   2.在vs里面有栈保护,称哨兵位
 
   3.栈保护
   4.数组最多分配多大内存?根据栈而定,与你的栈有关系。
   5.数组的两个参数:
     1)数组名会退化为指针
     2)数组长度len=sizeof(arr)/sizeof(arr[0])
          数组在哪里定义,len就在哪求
  6.逆置数组
7. 数组名不能作为左值
聚合类型不能整体赋值
8. sizeof不会运算表达式的值,不会运算
9. 数组和指针的访问方式不一样
        数组和指针之间访问数组内的元素
 10.char str4[5]=”a,b,c,d”;    (放\0)
 11.strlen不包含’\0’
 
 
 
 
 
作业1.define和const的区别,总结
 (1) 编译器处理方式不同
      define宏是在预处理阶段展开。
      const常量是编译运行阶段使用。
(2) 类型和安全检查不同
  define宏没有类型,不做任何类型检查,仅仅是展开。
  const常量有具体的类型,在编译阶段会执行类型检查。
(3) 存储方式不同
  define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存。
       宏定义不分配内存,变量定义分配内存。
  const常量会在内存中分配(可以是堆中也可以是栈中)。
(4)   宏替换只作替换,不做计算,不做表达式求解。
2.数组什么时候分配内存?什么时候确定大小?
首先,系统给数据分配内存以存储数据
每个存放数据的内存对应一个地址
对于二维数组a[3][3],我们要找到a[1][2]的值可以寻地址*(*(a+1)+2)找到,这个过程是两个寻地址过程:
1、a+1这个是地址运算(地址a+1),寻地址*(a+1)找到的是a[1]这个地址(&a[1][0])
2、再次进行地址运算a[1]+2,找到了a[1][2]的地址(&a[1][2]),通过寻地址运算找到这个数,*(a[1]+2)上面知道*(a+1)就是地址a[1],把*(a[1]+2)中的a[1]换掉就是*(*(a+1)+2)了
3.查  &arr
          arr  

  一个代表首字母地址,一个代表全部

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值