c++语法注意点(有补充再继续添加)
指针&引用
复合类型:基于基本数据类型定义的类型,即它不能单独存在,典型的就是指针和引用
你肯定没见过这样的定义
*p
以下两种定义的写法:
int *p1,p2;//第一种:*复合类型是修饰变量的,也就是说p1是int型指针,p2则是普通int型变量
int* p1,p2;//第二种:含义同上面写法f相同,p1是int指针,p2则是普通int型变量
int *p1,*p2;//p1,p2都是int型指针
*可以与类型int写在一起,也可以与变量p写在一起,两个想强调的内容不同:
int *p是强调变量具有复合类型
int* p是强调定义的类型是复合类型
但二者的含义是一样的
你可以选择选择一种去写,不要变来变去就可
struct&typedef的爱恨情仇
单链表的定义
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;
为了方便解释,我们要知道几个变量名的含义
单链表的结构是这样的:
LNode:链表的结点,L是Link的缩写
LinkList:链表英文名
*next:执行下一个结点的结构体指针
上面代码等价于
struct LNode{
int data;
struct LNode *next;
};
typedef struct LNode LNode;//将struct LNode命个别名为LNode
typedef struct LNode *LinkList;//将struct LNode *命个别名为LinkList
通过上面的定义那我们定义一个单链表就简化了
struct LNode{
int data;
struct LNode *next;
};
struct LNode *L;//没有用typedef,声明一个指向单链表的指针
typedef struct LNode{
int data;
struct LNode *next;
}LNode,*LinkList;
LNode *L;//有用typedef,声明一个指向单链表的指针
LinkList L;//有用typedef,声明一个指向单链表的指针
//以上两种定义含义相同,强调的点不同,
//第一个强调这是一个结点
//第二个强调这是一个链表
其他的注意点,不含typedef
struct typeName{
int a;
}varName;
//var是变量英文名variable的缩写
//这个;分号必须有,因为可以再{}外声明变量varName,
//此时可以直接使用变量varName,访问结构体内的元素,如varName.a
//但一般类型的定义和变量声明分开
struct typeName{
};
//也可以不声明任何变量