这些天比较的闲,就找了很多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”;
数组的定义与指针相反,由字符串常量初始化的数组是可以修改的。
这里本来需要加入原书中的多幅图片的,但是一直没有上传成功,所以暂时无法更好的说明问题。