设为首页 加入收藏

TOP

C语言中级(二)
2014-11-23 19:01:31 来源: 作者: 【 】 浏览:50
Tags:语言 中级
为形参,如void f(int **pp),作用是对作为指针的实参传址,如f(&p);

函数名是地址常量,可赋值给对应的指针变量----函数指针

函数指针赋值: pfun = 函数名: 把函数名看做函数的入口地址

pfun = &函数名: 把函数看做名字,取其地址

调用: (*pfun)(实参列表)

pfun(实参列表)

void myfun(int x) {printf(“%d”,x);}

void main {

void (*pfun)();

pfun = myfun;

myfun(10); //四种调用方式都是ok的

(*myfun)(10);

pfun(10);

(*pfun)(10);

}

22. (1).不要在函数调用处(参数列表中)写表达式;

(2).后++,求值时间要后到整个表达式求完值后,参数中的后++到形实结合后++;

(3).函数调用结果只能用于初始化非静态变量,static char *p = (char *)malloc(20)---->错误;

(4).static不作用与形参,会失去静态性;

(5).避免函数有记忆功能(不要使用static局部变量);函数中少修改static全局变量,避免影响其他函数;

(6).函数默认有extern修饰,函数和全局变量可以用static修饰限定为本文件使用;

(7).两层循环,多的应该放里面,减少循环次数。

23. 预处理

(1).预处理语句以#开头,不加”;”,独占一行,可放于任意位置;

(2).预处理在编译之前,条件编译、宏、条件包含;

(3).预处理之前还有预处理:消除续行,检查函数名,去掉注释;

(4).宏定义不是C语句,不是函数,不是类型定义,宏值多于一项一定要加(),防止优先级错误;

(5).宏中的’#’使变量字符串化;

(6).宏中的’##’使变量连接起来,#define TEST(a,b) a##b TEST(2,3); --->23;

(7).宏的参数不能用表达式;

(8).用const取代无参宏,用inline取代有参宏;

(9). (void)printf(“Beijing.\n”); void显式抛弃返回值.

24. 头文件

(1).头文件包含会引发重复定义变量,可以用条件编译解决:

#ifndef _FILENAME_H_

#define _FILENAME_H_

#endif

(2).头文件中不要定义较大的static全局变量,如结构数组等;

首页 上一页 1 2 下一页 尾页 2/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇C语言面试题详解(1) 下一篇C指针原理(91)-LINUX应用(3)-进..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: