一,指针。
1,常见的定义形式。
int *p; 指向一个指向整数的指针变量
int *p[10]; 10个指针组成的指针数组
int (*p)[10]; 指向一个数组的指针
int *p(); 定义p为返回一个指针的函数,该指针指向整形数据
int (*p)();定义p为指向函数的指针,该函数返回一个整型值
int **p;定义p为一个多级指针变量,它指向一个指向整数的指针变量
2,常见的等效操作。
取地址运算符:&
间接访问运算符:*(运算对象为地址,用来取该地址存的值)
若有int a[10][10];int (*p)[4];则下列表达式等效:*(*(p+i)+j), *(p[i]+j),(*(p+i))[j],p[i][j]。
3,指针函数和函数指针。
int (*p)();是一个变量声明,表示p是一个指向函数入口地址的指针变量(函数指针),该函数的返回值是整形数据,(*p)两边的括号不能少。
int *p();则是函数声明,表明p是一个指针函数,其返回值是一个指向整形数据的指针,*p两边没有括号。作为函数的声明,在括号内最好写入形式参数,没有形参时写入void,这样便于与变量什么相区别。
二,其他基本常识。
1,sizeof(对象):测定某一种类型数据所占多少byte(8bit)的运算符,其运算对象可以是任何数据类型的变量以及表达式。
2,typedef:对用户数据取别名。
typedef int INTEGER;//给int型号取个别名,叫做INTEGER
typedef char NAME[20];//给char[20]取个别名,叫NAME
3,宏定义。
#define 标识符 替换文本
#define 宏名(形参表) 替换文本
扩展:带参宏定义与函数的主要区别:
(1)定义方式不同。
(2)参数性质不同。宏参不必说明类型,也不分配空间,只是预处理时进行简单的文本替换。
(3)实现方式不同。宏是预处理阶段完成,不占程序运行时间。
(4)参数传递不同。带参宏不计算实参的值,而只进行简单的文本替换。而函数则先计算表达式的值,然后传给形参。
(5)返回值不同。宏定义无返回值;函数可有返回值。