c与指针 读书笔记 04

数组的值是一个指针常量,但数组不是一个指针常量。因为在以下两种场合下,数组和指针常量的表现不一样。sizeof和&, sizeof返回整个数组的长度,而不是指向数组的指针长度,&返回指向数组的指针,而不是指向某个指针常量的指针

数组当函数参数的时候,因为数组的值是一个指向数组零元素的指针,所以他会将这个指针通过值传递传递给函数。

静态初始化和自动初始化,静态初始化只初始化一次。自动初始化每次进入代码块作用域都要进行初始化

数组元素的存储顺序,多维数组的元素存储顺序是按照最右边的下标率先变化的原则,称为 行主序(row major order).

编写一维数组的函数参数时,既可以写成数组形式,又可以写成指针形式,但多维数组只有第一维能这样选择,其他维都必须写成数组形式.这样编译器才能够推断每个子维的长度

多位数组中,只有第一维的长度会被自动计算出来.

聚合数据类型能够同时存储超过一个的单独数据,c语言提供了两种类型的聚合数据类型,数组和结构。 数组是相同类型的元素的集合,他的每个元素是通过下表引用活指针间接访问来选择的
结构也是一些值的集合,这些值称为它的成员,但一个结构的各个成员可能具有不同的类型,

结构变量属于标量类型.

编译器按照成员列表的顺序一个接一个的给每个成员分配内存,只有当存储成员时需要满足正确的边界对齐要求时,成员之间才可能出现用于填充的额外内存空间

offsetof宏 确定结构某个成员的实际地址

位段的声明和结构类似,但它的成员是一个或多个位的字段,这些不同长度的字段实际上存储于一个或多个整形变量中.

位段的声明和任何普通的结构成员声明相同,但是有两个意外,首先,位段成员必须声明为int,signed int 或unsigned int类型,其次,在成员名的后面是一个冒号和一个整数,这个整数指定该位段所占用的位的数目

用signed int 或unsigned int显式的声明位段是个好主意,如果把位段声明为int类型,它究竟被解释为signed int或者unsigned int是由编译器决定的

联合的声明和结构类似,但它的行为方式却和结构不同,联合的所有成员引用的是内存的相同位置. c
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值