天天看点

C语言易错点总结(三)

6.基类型指针

基类型相同的两个指针不能进行+运算

【例】以下选项中,对于基类型相同的指针变量不能进行运算的运算符是()

A.+    B.-    C.++    D.--

【答案】A

【解析】在C语言中,当指针变量指向某一处连续存储单元时,可以对该指针变量进行++、--运算或者加、减某个整数的算术运算,以达到移动指针的目的。此外,当两个基类型相同的指针变量都指向某一个连续储存区的储存单元时,如指向同一组中的两个元素,则这两个指针可以相减,得到的差值(取绝对值)表示两个指针之间的元素个数。

7.区别  int *s() 与  int(*s)()

(小提示)在C语言中,()的优先级比*高,因此,在定义指向函教的指针变量时,“*指针变量名”外面必须有括号。
和变量的指针一样,函数的指针也必须赋初值,才能指向具体的函数。由于函数名代表了该函教的入口地址,因此,一个简单的方法是:直接用函数名为函数指针变量赋值。
而  int *s() 表示 一个返回值为指针的函数名。要注意区别这一点。

8.动态分配内存
p=(int*)malloc(size of(int));
//表示向系统借用一个整数(类型大小为int)的储存空间
.......
free(p);
//释放向系统借用的储存空间p