好文档 - 专业文书写作范文服务资料分享网站

局部变量全局变量静态局部变量静态全局变量的异同

天下 分享 时间: 加入收藏 我要投稿 点赞

exit(1); }

return (result * flag); }

int main(void) {

printf(\ printf(\ printf(\ printf(\ } 此函数中

1. 首先通过断言assert判断对myatoi()的调用是否合法; 2. 判断字符串开头是否有空格或制表符(TAB),有则跳过; 3. 若字符串第一个有效字符为’-‘,则flag置-1,若为’+’,则flag置1,若为其他字符,则判断此字符串为非数字字符串,result的最终值为0; 4. 将字符类型的数字转换成int类型的数字,

5. 判断result是否越界,若越界,跳出程序,否则返回result*flag的值;

这道题主要考的是程序员的编程风格,虽说这个函数看上去很简单,但如果要考虑到程序的健壮性,正确定,可靠性,效率,易用性,可扩展性,可移植性等属性的话,程序编写起来就不简单了;

四. 含参数的宏与函数的优缺点

无参的宏就用得多了,但带参数的宏呢?见过很多,但真正自己去编的几乎没有,今天,顺带把这个问题也搞清楚。 含参数的宏优点:

省去了函数调用的开销,运行效率高. 含参数的缺点:

由于宏本质上是字符串的替换,所有可能会由于一些参数的副作用导致得出 错误的结果. 如:

#define max(a, b) ( ((a) > (b)) ? (a) : (b) ) 如果程序中出现这样的调用: max(a++, b);

将导致a被计算2次,从而可能得到错误的结果,而函数调用不会出现这种问题. 另外,如果程序中有多次宏替换的话,可能导致代码体积变大. 函数调用的优点:

没有带参数宏可能导致的副作用,计算的正确性较宏更有保证. 函数调用的缺点:

函数调用需要一些参数,返回地址等入栈,出栈的开销,效率没有带参数的宏高.

局部变量全局变量静态局部变量静态全局变量的异同

exit(1);}return(result*flag);}intmain(void){printf(\printf(\printf(\pr
推荐度:
点击下载文档文档为doc格式
0zkim5gk556trx01723y3gzju6vsv000dk3
领取福利

微信扫码领取福利

微信扫码分享