• C语言经典面试题



    【题目】零值比较--BOOL,int,float,指针变量与零值比较的if语句。

    (首先给个提示:题目中要求的是零值比较,而非与0进行比较,在C++里“零值”的范围可就大了,可以是0, 0.0 , FALSE或者“空指针”。)

    (1)int型变量 n 与“零值”比较的 if 语句就是:

    if ( n == 0 )
    if ( n != 0 )
    如下写法均属不良风格.
    if ( n ) // 会让人误解 n 是布尔变量 if ( !n )

    (2)请写出BOOL flag与“零值”比较的if语句:

    if ( flag )
    if ( !flag )
    
    如下写法均属不良风格。
    if (flag == TRUE) 
    if (flag == 1 ) 
    if (flag == FALSE) 
    if (flag == 0)

    (3)请写出 float x与“零值”比较的if语句。

    千万要留意,无论是float 还是double 类型的变量,都有精度限制,都不可以用“==”或“!=”与任何数字比较,应该设法转化成“>=”或“<=”形式。
    假设浮点变量的名字为x;

    其中EPSINON 是允许的误差(即精度)。

    const float EPSINON = 0.00001;
    if ((x >= - EPSINON) && (x <= EPSINON)   
    
    如下是错误的写法。
    if (x == 0.0) 
    if (x != 0.0)

    (4)请写出 char *p 与“零值”比较的 if 语句。

    if (p == NULL)
    if (p != NULL)
    
    如下写法均属不良风格。
    if (p == 0)        // 容易让人误解p是整型变量
    if (p != 0) 
    if (p)                // 容易让人误解p是bool型变量
    if (!p)

    【题目】以下为Linux下的32 位C 程序,请计算sizeof的值。

    char  str[] = “Hello” ;                               
    char   *p = str ;                                      
    i nt    n = 10;      

    请计算
    (1)sizeof (str ) =
    (2)sizeof ( p ) =
    (3)sizeof ( n ) =

    答案:6 ,  4 ,   4


    【题目】用变量a 给出下面的定义
    (e) 一个有10个指针的数组,该指针是指向一个整型数的;
    (f) 一个指向有10个整型数数组的指针;
    (g) 一个指向函数的指针,该函数有一个整型参数并返回一个整型数;
    (h) 一个有10个指针的数组,该指针指向一个函数,该函数有一个整型参数并返回一个整型数;


    【标准答案】
    (e)int * a[10];
    (f)int (*a)[10]
    (g)int (*a)(int);
    (h) int (*a[10])(int)


    【题目】请问以下代码有什么问题:

    char* s="AAA";
    printf("%s",s);
    s[0]='B';
    printf("%s",s);
    有什么错?

    【答案】

    "AAA" 是字符串常量。s是指针,指向这个字符串常量,所以声明s的时候就有问题。
    cosnt char* s="AAA";
    然后又因为是常量,所以对是s[0] 的赋值操作是不合法的。


    【题目】c和c++ 中的struct有什么不同?
    【答案】

    c和c++ 中struct的主要区别是c中的struct不可以含有成员函数,而c++ 中的struct可以。c++ 中
    struct和class的主要区别在于默认的存取权限不同,struct默认为public ,而class默认为private;


    【题目】 以下会出现什么问题?打印结果是是多少?

    void main()
    {
        char aa[10];
        printf(“%d”,strlen(aa));
    }   

    【答案】
    sizeof()和初不初始化,没有关系;
    strlen()和初始化有关,打印结果值未知。


    【题目】头文件中的ifndef/define/endif 干什么用?

    【答案】

    防止该头文件被重复引用。


    【题目】#include <filename.h>和#include “filename.h”有什么区别?

    【答案】
    对于#include <filename.h> ,编译器从标准库路径开始搜索filename.h ;
    对于#include “filename.h”,编译器从用户的工作路径开始搜索filename.h 。


    【题目】const有什么用途?(请至少说明两种)
    【答案】:

    (1)可以定义const 常量
    (2)const 可以修饰函数的参数、返回值,甚至函数的定义体。被const 修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。


    【题目】如何引用一个已经定义过的全局变量?
    【答案】可以用引用头文件的方式,也可以用extern 关键字,如果用引用头文件方式来引用某个在头文件中声明的全局变理,假定你将那个变量写错了,那么在编译期间会报错,如果你用extern 方式引用时,假定你犯了同样的错误,那么在编译期间不会报错,而在连接期间报错。


    【题目】用预处理指令#define 声明一个常数,用以表明1年中有多少秒(忽略闰年问题)


    【答案】

    #define SECONDS_PER_YEAR (60 * 60 * 24 * 365)UL


  • 相关阅读:
    发现可高速缓存的 SSL 页面
    启用了不安全的HTTP方法
    目录遍历漏洞
    强强合体:Docker版Kali Linux发布
    Kali2.0 Sqlmap清除历史扫描日志
    OWASP-ZAP
    基于web的项目管理软件Redmine
    sqlmap用户手册
    Sqlmap基础(二)
    信息存储安全
  • 原文地址:https://www.cnblogs.com/wood2012/p/8504926.html
Copyright © 2020-2023  润新知