联想笔试题

 
联想笔试题----如需 转载请注明出处,谢谢! 
 
1.设计函数 int atoi(char *s)。
 
int atoi ( char *s )
{

    char
sign ;
    char
sign_val = 1 ;
    int
val = 0 ;
    int
n = 0 ;

    /* skip spaces */

    while
(isspace (*s ))
        ++
s ;
    if
(*s == '-' || *s == '+' )
        /* skip '-' and '+' sign */

    {

        sign = *s ;
        if
(sign == '-' )
            sign_val = - 1 ;
        ++
s ;
    }


    /* when goes here, it is not space or sign */

    while
((*s != '/0' ) && isdigit (*s ))
    {

        val = 10 * n + (*s - '0' );
        n = val ;
        s ++;
    }

    if
(*s != '/0' )
    {

        printf ( "non digit in your input!!/n" );
        exit (- 1 );
    }

    /* non error occured */

    return
(sign_val * val );
}
 
 
2.int i=(j=4,k=8,l=16,m=32); printf("%d", i); 输出是多少?
结果为: 32.

3.解释局部变量、全局变量和静态变量的含义
局部变量包括函数的形参,包含在函数体或者语句块内的变量,局部变量的生存期
在退出函数或语句块后结束。
全局变量是指在所有函数和语句块之外的变量,它对于整个程序均可见,全局变量
的生存期与程序的生存期相同.

静态变量指由关键字static声明的变量,它的作用域和其他变量一样,由它所在的
位置决定,如在函数体或语句块中声明,则只在函数体或语句块可见,其他地方均不
可见.
它的生存期与程序相同.

4.解释堆和栈的区别。
简述如下:
栈上分配的内存,由系统自动分配,系统会自动收回.
如果需要动态分配内存,则只能通过malloc/new在堆上分配的内存,
使用完毕后,通过free/delete来释放内存。
 
 
5.论述含参数的宏与函数的优缺点。
含参数的宏优点:
省去了函数调用的开销,运行效率高.
含参数的缺点:
由于宏本质上是字符串的替换,所有可能会由于一些参数的副作用导致得出
错误的结果.
如:
#define max(a, b)   ( ((a) > (b)) ? (a) : (b) )
如果程序中出现这样的调用: max(a++, b);
将导致a被计算2次,从而可能得到错误的结果,而函数调用不会出现这种问题.
另外,如果程序中有多次宏替换的话,可能导致代码体积变大.
函数的优点是:
没有带参数宏可能导致的副作用,计算的正确性较宏更有保证.
函数调用的缺点:
函数调用需要一些参数,返回地址等入栈,出栈的开销,效率没有宏函数高.

来至
http://blog.chinaunix.net/u/19481/showart_138359.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值