《C专家编程》3-4章阅读收获

第三章


恐怖的C语言声明语法


“C语言声明的形式和使用的形式相似”,例如:一个int类型的指针数组被声明为int *p[];  ,并且以*p[i]这样的表达式引用或者使用指针所指向的数据

C语言的声明所存在的最大问题是你无法以一种人们所习惯的自然方式从左到右阅读一个声明。

const int * grape;//1
int const * grape;//2
int *const grape_jelly;//3

1、2都是指针所指向的对象只读。而3是指针只读。

const int * const grape_jam;//4
int const * const grape_jam;//5

4、5都是指针和指针所指向的对象同时不可更改。

 

结构 联合  枚举

结构和联合的区别:在结构中,每个成员依次存储,而在联合中,所有的成员都从偏移地址零开始存储。这样,每个成员的地址都重叠在一起,只有一个成员真正存储于该地址。

·typedef   为现有类型取一个新名字。一般来说,typedef用于简洁表示指向其他东西的指针,可以将一长串的类型表达其他名字。

p67有不懂的地方   函数指针 ,利用函数本身做参数。     typedef应该用在 数组、结构、指针以及函数的组合类型。


第四章  


数组和指针并不相同


定义(Definition)和声明(Declaration)的区别:

定义只能出现一个地方,作用是确定对象的类型并且分配内存,用于创建新的对象,例如int ma_array[100];

声明可以多次出现,作用是描述对象类型,用于指代其他地方定义的对象。例如extern int ma_array[];


区别一:在内存中对数据的访问 


数组访问是  直接对数组首地址取偏移,偏移后的地址里存放的即为数据内容

指针访问是  取指针中的内容,该内容代表一个地址,该地址中存放的数据即表示数据内容(间接引用)


指针数组
保存数据的地址保存数据
间接访问数据直接访问数据
通常用于动态数据结构隐式分配内存
相关函数为malloc(), free()隐式的分配和删除
通常指向匿名数据自身为数据名



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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值