《C专家编程》阅读笔记

这些天比较的闲,就找了很多C方面的书来阅读,以前很多模糊的概念希望通过 

第三章 分析C语言的声明

 

typedef声明一个结构的方法(注意简洁)

 

typedef struct [NewType Tag]

{

 ....;

 ....;

 ....;

}NewType;

 

注意区分下面的2种情况,

 

语句1

typedef struct fruit

{

  int weight;

  price_per_lb;

}fruit;

 

语句2

struct veg

{

  int weight;

  price_per_lb;

}veg;

 

语句1声明了结构标签“fruit”和由typedef声明的结构类型“fruit”,其实际效果如下

struct fruit mandarin;  /*使用结构标签fruit*/

     fruit mandarin;  /*使用结构类型fruit*/

 

而语句2声明了结构标签“veg”和变量veg,只有结构标签能够在以后的声明种使用,如

struct veg potato;

 

而下面的则是错误的:

veg cabbage/*错误*/

第四章、数组和指针并不相同

 

区分定义和声明

 

定义:为对象分配内存

声明:所说明的并非自身,而是描述其他地方创建的对象

 

每个符号的地址在编译时可知,编译器可以直接对该地址进行操作,并不需要增加指令首先取得具体的地址;

 

数组和指针在初始化字符串变量时的区别:

定义指针时,并不为指针所指的对象分配空间,只为指针本身分配空间(通常是4个字节),除非在定义时同时赋给指针一个字符串常量进行初始化,例如下面的定义创建了一个字符串常量(为其分配了内存)

char *p = “abcde”;

 

并且初始化时创建的字符串常量被定义为只读,如果试图通过指针修改这个字符串的值,则回出错。

 

char a[] = “abcde”;

数组的定义与指针相反,由字符串常量初始化的数组是可以修改的。

 

这里本来需要加入原书中的多幅图片的,但是一直没有上传成功,所以暂时无法更好的说明问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值