《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”;

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

 

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

你可能感兴趣的:(C/C++,编程,c,struct,编译器,语言)