记录-C和指针第八章-数组

正确理解数组名很重要!
数组名表示整个数组? 错误的
数组名是个常量,它的值为第一个元素的地址
1:
数组名b:当b在表达式中时,可以认为b变量在内存中的值是 个常量(即数组第一个元素的地址);

但是在两种情况下要用其他思维去理解(sizeof; & 这两种操作符)
sizeof(b),表达式,结果是整个数组中的元素个数
&b,表达式,结果是 得到一个指向数组的指针,而不是指向常量的指针

2:你不能用赋值符,企图一次复制一个数组到另一个数组变量。必须用循环,一个个复制过去

3:数组名是常量,不可以修改! 如b=c;语句是错误的

4:下表和数组名一起使用,用来标示集合中的特定的元素值

5:b的类型,是由数组中的元素类型决定的。

总结:数组名b在表达式里的3种用法思路
一般把b当做一个常量,它的内存位置上存储的是第一个元素的地址
其次,sizeof(b) 表达式,就是再说数组有多少个元素
&b,就是得到一个指向数组的指针

间接访问符访问一个位置时,用法有两个,有左,右之分
1:*b 这个表达式,作为右值,整个表达式就是个整数,就是个内存地址的值
2:*b这个表达式,作为左值,整个表达式就是个框,就是块内存,用来存储。

间接访问符和下标的关系,别想太多,自动按照下面的方式换算就好了
array[sub]
*(array+sub)所以说,这两个操作符除了优先级不同,完全相同。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
数组和指针
1:脑子里要反应的是,数组和指针都是个变量(当然,数组的这个变量实则是个确定了值的变量,即常量)。如:a,b
2:理解本质
int a[5];
这条语句,做了两件工作:
1)首先,编译器根据声明中指定的元素数量,在内存中分配了一段连续空间。
2)然后才是创建数组名变量a(常量),把它的值写为 1)中分配的空间的首地址

int *b;
这条语句,则只做了一件事,就是创建了变量b,为它分配了空间

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
C语言中,所有的函数参数传递,都是传值传递,即复制拷贝一份实参的副本。即分配内存,建立形参变量,变量里拷贝了实参中的值。

但是,当传递的是个指针时,如果在函数体内又发生了 间接访问操作,那么看上去就好像进行了传址操作。这时会影响到主函数中的实参值

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~指针数组

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值