C面试复习笔记

一,指针。

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)返回值不同。宏定义无返回值;函数可有返回值。

    

    

 

 

 

posted @ 2013-10-03 22:06  Devin Wu  阅读(224)  评论(1编辑  收藏  举报